使用 jQuery 禁止在文本输入字段中使用不需要的字符

Disallowing unwanted characters in text input field with jQuery

我正在使用此代码来防止用户在注册页面的用户名字段中输入任何空格。

$(function(){
   $('#username').bind('input', function(){
   $(this).val(function(_, v){
       return v.replace(/\s+/g, '');
       });
    });
});

但是有没有办法禁止除数字、大写和小写以外的所有字符?

所以用户可以输入的唯一字符是:

0123456789 abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ

试试这个

return v.replace(/[^a-zA-Z\d]/g, '');
$('#username').keypress(function (e) {
    var regex = new RegExp("^[a-zA-Z0-9]+$");
    var str = String.fromCharCode(!e.charCode ? e.which : e.charCode);
    if (regex.test(str)) {
        return true;
    }

    e.preventDefault();
    return false;
});

编辑(允许退格):

$('#username').keypress(function (e) {
    if (keyCode == 8 || (keyCode >= 35 && keyCode <= 40)) {
       return;
    }

    var regex = new RegExp("^[a-zA-Z0-9]+$");
    var str = String.fromCharCode(!e.charCode ? e.which : e.charCode);
    if (regex.test(str)) {
        return true;
    }

    e.preventDefault();
    return false;
});

if 条件检查按下的键是箭头、退格键还是删除键。如果是这样,代码的验证部分就没有意义了。

v.replace(/[^a-zA-Z0-9 :]/g, "")

应该可以解决问题