javascript - Jquery 允许字母数字字符和非文本按键

标签 javascript jquery regex

我有一个文本框,用户只能在其中输入字母数字字符,并且应该允许按非文本键,如退格键、箭头键等。此外,它还应该适用于所有主流浏览器(如 Mozilla Firefox)。

我尝试了几个示例,这些示例只允许我输入字母数字字符,但退格键不适用于 Mozilla Firefox 中的以下示例。

$('input').bind('keypress', function (event) {
    var regex = new RegExp("^[a-zA-Z0-9]+$");
    var key = String.fromCharCode(!event.charCode ? event.which : event.charCode);
    if (!regex.test(key)) {
       event.preventDefault();
       return false;
    }
});

最佳答案

您可以添加 [\b] 以匹配并允许退格。

代码:

var regex = new RegExp("^[a-zA-Z0-9\b]+$");

演示:http://jsfiddle.net/M3bvN/

更新

您可以检查按下的键是否在允许键列表(arrows、home、del、canc)中,如果是,则跳过验证,而不是扩展您的正则表达式。

这不会阻止用户复制/粘贴不允许的字符。所以也在 blur 事件中执行验证控制(并且总是在服务器端)。

代码:

var keyCode = event.keyCode || event.which
// Don't validate the input if below arrow, delete and backspace keys were pressed 
if (keyCode == 8 || (keyCode >= 35 && keyCode <= 40)) { // Left / Up / Right / Down Arrow, Backspace, Delete keys
    return;
}

演示:http://jsfiddle.net/M3bvN/3/

关于javascript - Jquery 允许字母数字字符和非文本按键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21280482/

相关文章:

javascript - 在前端显示 url 响应

c# - 收获选择的插件无法显示 ASP.NET MVC 下拉列表的验证消息

.net - 需要帮助构建正则表达式以匹配特定字符串(内部示例)

javascript - axios post数组数据

javascript - fullCalendar - 首次加载时未应用属性

javascript - 从 Angular 自定义指令中获取带有输入框列表的组合字符串

javascript - 使用 JS 正则表达式删除除想要的标签之外的所有标签

javascript - 合并对象数组内的两个对象

javascript - 如何将此代码从 v3# 转换为 v4#?

c# - 用于在字符串中查找通配符子字符串的正则表达式模式