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

Shr*_*rry 5 javascript regex jquery

我有一个文本框,用户应该只输入字母数字字符,并且应该允许非空格键按下,如退格键,箭头键等.此外,它还适用于所有主流浏览器(如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;
    }
});
Run Code Online (Sandbox Code Playgroud)

Irv*_*nin 10

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

码:

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

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

UPDATE

您可以检查按下的键是否在允许的键列表中(箭头,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;
}
Run Code Online (Sandbox Code Playgroud)

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