javascript - 防止输入引号等字符

标签 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 事件中阻止这种情况?

最佳答案

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

关于javascript - 防止输入引号等字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27720364/

相关文章:

javascript - 在 Angular 2 的 ag-grid 中使用 gridOptions 中的变量

c# - 从 C# 应用程序调用 Javascript 文件

javascript - 如何使用 flex-wrap : wrap 去除行与行之间的空间

javascript - 使用 jQuery 将一个元素附加到具有相应索引的不同元素

html - Internet Explorer 无法识别字体

jquery - 当你有 rowspan 时交替行颜色

javascript - 滚动一定距离后弹出文本不起作用

javascript - 选择器 "not"的 querySelectorAll 在 IE 8 上不起作用

javascript - 单击链接时显示和隐藏 div

php - 将参数从一个页面上的 JS/Jquery 传递到另一个页面上的 PHP