Javascript 防止输入引号等字符

Javascript 防止输入引号等字符,javascript,jquery,html,regex,Javascript,Jquery,Html,Regex,我使用正则表达式只允许字母、数字和点() 但是,仍然可以插入诸如“、e、~e、#、$等字符。因此,我指的是使用Shift键键入的字符 此外,仍然允许使用alt+1234(例如)键入字符 有什么方法可以防止在输入的keydown事件中出现这种情况吗?当浏览器注册时,keypress事件被发送到元素 键盘输入。这类似于keydown事件,但在 重复按键的情况。如果用户按住一个键,则会出现一个向下键 事件触发一次,但会触发单独的按键事件 对于每个插入的字符 因此,要避免SHIFT+键、ALT+键,请

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

但是,仍然可以插入诸如“、e、~e、#、$等字符。因此,我指的是使用Shift键键入的字符

此外,仍然允许使用alt+1234(例如)键入字符


有什么方法可以防止在输入的keydown事件中出现这种情况吗?

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

因此,要避免SHIFT+键、ALT+键,请使用
keypress
而不是
keydown

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

与差不多,这也面临同样的问题。@M42我使用\b来允许退格。正则表达式工作正常,但仍然允许许多特殊字符。我认为这更多的是javascript问题,而不是正则表达式问题。使用keypress代替keydown来防止ALT+1…似乎工作正常,是否尝试刷新浏览器?例如我注意到一个小问题:当按下“然后一个字符(如e或其他)时,e不会出现在文本框中。好的,再次测试:对我来说,它在Chrome中工作正常,但在Firefox 33.1中不工作
$('input').on('keypress', function (e) {
    if (/^[a-zA-Z0-9\.\b]+$/.test(String.fromCharCode(e.keyCode))) {
        return;
    } else {
        e.preventDefault();
    }
});