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

时间:2015-08-27 14:11:16

标签: jquery forms replace textinput

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

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

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

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

0123456789 abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ

3 个答案:

答案 0 :(得分:0)

试试这个

return v.replace(/[^a-zA-Z\d]/g, '');

答案 1 :(得分:0)

$('#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;
});

https://stackoverflow.com/a/13237018/1017882

编辑(允许退格):

$('#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条件检查按下的键是箭头,退格还是删除。如果是这样,那么代码的验证部分就没有意义了。

答案 2 :(得分:0)

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

应该做的伎俩