利用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键删除
代码如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 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 } |
效果:
相关:
https://github.com/snandy/e.js/blob/master/test/stop.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端
2011-02-28 IE浏览器中js使用中文标识符的bug
2011-02-28 Javascript中大括号“{}”的多义性
2011-02-28 Javascript中匿名函数的多种调用方式