编程语言
首页 > 编程语言> > javascript – 如何防止keydown上的数字输入?

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