利用Keydown事件阻止用户输入
2014-02-28 16:32
183 查看
先了解下各事件的区别
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(code) {
// 数字
if (code>= 48 && code<= 57 ) return true
// 小数字键盘
if (code>= 96 && code<= 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
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 }
效果:
// var input = document.getElementById('number_ipt')
input.onkeydown = function(e) {
var keyCode = e.keyCode
if ( !isNumber(keyCode) ) return false
}
// 仅能输入数字
function isNumber(code) {
// 数字
if (code>= 48 && code<= 57 ) return true
// 小数字键盘
if (code>= 96 && code<= 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
相关文章推荐
- 利用Keydown事件阻止用户输入实现代码
- 利用Keydown事件阻止用户输入
- 利用Keydown事件阻止用户输入实现代码
- #632 – 使用PreviewTextInput事件阻止用户输入(Block Input Using PreviewTextInput)
- Python利用pyHook实现监听用户鼠标与键盘事件
- JS阻止用户默认事件的发生
- android跨进程事件注入(程序模拟用户输入)
- Angular2学习笔记.3、通过模板调用Controller事件实现用户输入和显示,UserInput
- 【转】Android 用户事件输入路径(Message/Event, Dispatch Path)
- 接受用户输入的表达式,利用数据结构中栈完成多项式(+ - * / ( ))求值
- 利用js实现如果不符合规则的输入则阻止表单的提交
- 利用用户输入的密码生成密钥
- 利用map()函数,把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字
- 输入非登录页面,转到登录页面,阻止用户不登录而访问其他页面
- 一个用户空间读取输入事件的例子
- js onkeydown事件中无法得到用户输入的数字解决方法
- Actionscript3.0 里的用户事件流,以及如何利用
- android跨进程事件注入(程序模拟用户输入)
- logz.io一个企业级的ELK日志分析器 内部集成了机器学习识别威胁——核心:利用用户对于特定日志事件的反馈处理动作来学习判断日志威胁 + 类似语音识别的专家系统从各方收集日志威胁信息
- 阻止input文本框输入回车键时,出现表单提交事件