javascript – 如何防止keydown上的数字输入?
作者:互联网
我想阻止文本字段上的keydown事件的数字输入并运行自定义处理函数.以下是问题
> e.target.value没用,因为键值尚未投射到目标值
>数字的e.keyCode取决于键盘类型,语言布局,Fn或Shift键
> String.fromCharCode(e.keyCode)不可靠,至少在我的键盘上(捷克qwerty)
> w3 specification表示e.keyCode是遗留属性并建议使用e.char,但它尚未在浏览器中实现
那么如何在文本字段出现之前捕获数字输入?
解决方法:
请改用按键事件.这是唯一的关键事件,它将通过大多数浏览器中的哪个属性和(令人困惑的)IE中的keyCode属性为您提供有关所输入字符的信息.使用它,您可以根据键入的字符有条件地抑制按键事件.但是,这不会帮助您阻止用户粘贴或拖动包含数字字符的文本,因此您仍需要某种额外的验证.
我最喜欢的JavaScript关键事件参考:http://unixpapa.com/js/key.html
textBox.onkeypress = function(e) {
e = e || window.event;
var charCode = (typeof e.which == "undefined") ? e.keyCode : e.which;
var charStr = String.fromCharCode(charCode);
if (/\d/.test(charStr)) {
return false;
}
};
标签:javascript,keyboard-events,cross-browser 来源: https://codeday.me/bug/20190928/1828177.html