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)
但是,仍然可以插入",é,~e,#,$等字符.所以我的意思是你用Shift键输入的字符.
此外,仍然允许使用alt + 1234键入字符.
有没有办法在输入的keydown事件上阻止这种情况?
当浏览器注册键盘输入时,按键事件将发送到元素.这类似于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)