防止来自输入的引号等字符

时间:2014-12-31 11:18:11

标签: javascript jquery html regex

我正在使用正则表达式只允许字母,数字和点(

$('input').on('keydown', function (e) {
    if (/^[a-zA-Z0-9\.\b]+$/.test(String.fromCharCode(e.keyCode))) {
        return;
    } else {
        e.preventDefault();
    }
});

jsFiddle

但是,仍然可以插入“,é,~e,#,$等字符。所以我的意思是你用Shift键输入的字符。

此外,仍然允许使用alt + 1234键入字符。

有没有办法在输入的keydown事件中阻止这种情况?

1 个答案:

答案 0 :(得分:5)

当浏览器注册时,keypress事件被发送到元素 键盘输入。这类似于keydown事件,除了在 密钥重复的情况。如果用户按下并按住键,则为keydown 事件被触发一次,但会触发单独的按键事件 对于每个插入的角色。

因此,要避免使用SHIFT + KEY,ALT + KEY,请使用keypress而非keydown

$('input').on('keypress', function (e) {
    if (/^[a-zA-Z0-9\.\b]+$/.test(String.fromCharCode(e.keyCode))) {
        return;
    } else {
        e.preventDefault();
    }
}); 

fiddle is here