利用 keyDown 事件阻止用户输入

发布于 2019-04-15 10:04:29 字数 1561 浏览 2249 评论 0

有时候我们不想让用户输入内容,但是又必须放置一个文本框,特别是表单里面,那么我们可以 keyDown 事件阻止用户的输入。

先了解下各事件的区别

  • keydown:在控件有焦点的情况下按下键时发生
  • keypress:在控件有焦点的情况下按下键时发生
  • keyup: 在控件有焦点的情况下释放键时发生

意义

  1. keypress 主要用来接收字母、数字等 ANSI 字符。keydown 和 keyup 事件过程通常可以捕获键盘除了 PrScrn 所有按键 (这里不讨论特殊键盘的特殊键)
  2. keypress 只能捕获单个字符,keydown 和 keyup 可以捕获组合键
  3. keypress 不显示键盘的物理状态(SHIFT 键),而只是传递一个字符。keypress 将每个字符的大、小写形式作为不同的键代码解释,即作为两种不同的字符。
  4. keydown 和 keyup 不能判断键值字母的大小,用两种参数解释每个字符的大写形式和小写形式:keycode — 显示物理的键(将 A 和 a 作为同一个键返回)和 shift —指示 shift + key 键的状态而且返回 A 或 a 其中之一
  5. keypress 不区分小键盘和主键盘的数字字符,keydown 和 keyup 区分小键盘和主键盘的数字字符
  6. keydown、keyup 事件是当按下 ( keydown ) 或松开 ( keyup ) 一个键时发生的。由于一般按下键盘的键往往会立即放开(这和鼠标不同),所以这两个事件使用哪个差别不大。而且,up和其他两者还有一个区别:要判断 key 修改后的状态必须用 up

我们可以利用 keyDown 事件来阻止用户的输入,比如某输入域只能输入数字

键盘上数字键的 keyCode

  • [48-57] 数字键
  • [96-105] 数字小键盘
  • 此外允许 Backspace 键删除

代码如下

var input = document.getElementById('number_ipt')
input.onkeydown = function(e) {
  var keyCode = e.keyCode
  if ( !isNumber(keyCode) ) return false		   
}
// 仅能输入数字
function isNumber(keyCode) {
  // 数字
  if (keyCode >= 48 && keyCode <= 57 ) return true
  // 小数字键盘
  if (keyCode >= 96 && keyCode <= 105) return true
  // Backspace键
  if (keyCode == 8) return true
  return false
}

示例:http://run.wenjiangs.com/code/#/?code=scaX9Iyn

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

0 文章
0 评论
84960 人气
更多

推荐作者

挽容

文章 0 评论 0

女中豪杰

文章 0 评论 0

吻安

文章 0 评论 0

cassie

文章 0 评论 0

JinFeng

文章 0 评论 0

undefined

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文