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

Posted

技术标签:

【中文标题】使用 jQuery 在文本输入字段中禁止不需要的字符【英文标题】:Disallowing unwanted characters in text input field with jQuery 【发布时间】:2015-11-21 23:21:28 【问题描述】:

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

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

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

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

0123456789 abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ

【问题讨论】:

【参考方案1】:

试试这个

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

【讨论】:

是的,这个工作并且仍然允许退格工作,谢谢;)【参考方案2】:
v.replace(/[^a-zA-Z0-9 :]/g, "")

应该做的伎俩

【讨论】:

【参考方案3】:
$('#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://***.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 条件检查按下的键是箭头、退格还是删除。如果是这样,那么代码的验证部分就没有任何意义了。

【讨论】:

啊,不是很完美,这会阻止退格键工作。有解决办法吗?

以上是关于使用 jQuery 在文本输入字段中禁止不需要的字符的主要内容,如果未能解决你的问题,请参考以下文章

如果给定jquery ui进行日期选择,如何不允许用户在日期字段的文本框中输入? [复制]

如何使用 jQuery 在页面加载时关注表单输入文本字段?

jquery验证文本输入数组仅验证第一个字段[重复]

HTML如何禁止文本框输入

jquery/javascript 在输入字段中添加文本

在 Jquery 中输入输入字段时的日期验证