利用Keydown事件阻止用户输入

先了解下各事件的区别

keydown:在控件有焦点的情况下按下键时发生

keypress:在控件有焦点的情况下按下键时发生

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

意义

keypress主要用来接收字母、数字等ANSI字符。keydown 和 keyup 事件过程通常可以捕获键盘除了PrScrn所有按键 (这里不讨论特殊键盘的特殊键)

keypress 只能捕获单个字符,keydown 和 keyup 可以捕获组合键

keypress 不显示键盘的物理状态(SHIFT键),而只是传递一个字符。keypress 将每个字符的大、小写形式作为不同的键代码解释,即作为两种不同的字符。

keydown 和 keyup 不能判断键值字母的大小,用两种参数解释每个字符的大写形式和小写形式:keycode — 显示物理的键(将 A 和 a 作为同一个键返回)和 shift —指示 shift + key 键的状态而且返回 A 或 a 其中之一

keypress 不区分小键盘和主键盘的数字字符,keydown 和 keyup 区分小键盘和主键盘的数字字符

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, del, 左右方向键

if (code == 8 || code == 46 || code == 37 || code == 39) return true

return false

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、键盘事件基础 1、定义 keydown:按下键盘键 keypress:紧接着keydown事件触发(只有按下字...
    07120665a058阅读 50,775评论 5 33
  • 总结: 鼠标事件 1.click与dbclick事件$ele.click()$ele.click(handler(...
    阿r阿r阅读 1,640评论 2 10
  • 键盘事件全面控制主要分四个部分第一部分:浏览器的按键事件第二部分:兼容浏览器第三部分:代码实现和优化第四部分:总结...
    ShindouHikaru阅读 3,942评论 0 4
  • 赵楚琪,小宝贝,我是妈妈。宝贝,本月10.26号就是你一岁生日喽。妈妈提前祝你生日快乐,健健康康成长,开开...
    王慧_3019阅读 484评论 0 0
  • 叫了起来,但是鸭子一声也不叫,真有趣。我们进入金碧辉煌的贵宾房里,我看到了贵宾房里有舒服的座椅,金色的墙纸。我品尝...
    橙色小蘑菇阅读 390评论 0 9