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

Rob*_*vdA 4 html javascript regex jquery

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

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

的jsfiddle

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

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

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

axe*_*hel 5

当浏览器注册键盘输入时,按键事件将发送到元素.这类似于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();
    }
}); 
Run Code Online (Sandbox Code Playgroud)

小提琴就在这里