如何强制用户在Jquery中仅输入字母数字值

时间:2014-11-07 11:29:34

标签: javascript jquery

我有一个输入类型,我想阻止用户输入像字母数字值。

我做到了:

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

我面临的问题是标签正确删除键无效。我还要补充一点,请帮助我。

更新代码

$('.name_list').live('keypress', function (event) {
        var regex = new RegExp("^[a-zA-Z0-9\b]+$");
        var key = String.fromCharCode(!event.charCode ? event.which : event.charCode);
        var charCode = (event.which) ? event.which : event.keyCode;
        var Enteted = String.fromCharCode(event.which).toLowerCase();
        if (charCode != 9 && (charCode != 37 || Enteted !='%') && charCode!=39 && charCode != 46 && !regex.test(key)) {
            event.preventDefault();
            return false;
        }
    });

在此我面临的问题是它允许输入

2 个答案:

答案 0 :(得分:0)

jQuery validate plugin

jQuery.validator.addMethod("alphanumeric", function(value, element) {
        return this.optional(element) || /^[a-zA-Z0-9]+$/.test(value);
}); 

答案 1 :(得分:0)

因为你正在使用这个条件:

if (!regex.test(key)) {
   //...
} 

您需要使用此条件进行检查,它们是标签,左箭头,右箭头还是删除按钮。

if (key !== 9 && key != 37 && key!=39 && key != 46 && !regex.test(key)) {