使用Regex的jQuery Validator和Optional Fields

时间:2011-10-06 17:12:21

标签: jquery jquery-validate

我有一个可选字段(比如说“text1”),可以是空白字符,也可以只是字母数字字段:

jQuery.validator.addMethod("onlyAlphaNumeric", 
        function(value, element) {  
            var regExp = new RegExp(/^[a-zA-Z0-9]+$/);              
            return ((this.optional(element)) || regExp.test(value));
        }
    , "Only aplaha-numeric characters allowed");


$("#student-search-form").validate({
    rules : {
        text1 : {
            optional : true,
            onlyAlphaNumeric: "Only a-n allowed"
        }
    },
    messages: {
        text : {                    
            acceptOnly: " Only alpha-numeric characters allowed"
        }               
    }
});

问题是没有验证,所以如果用户在'text1'中输入“!& ^%(*”,表单会被提交,不会进行错误检查。

有人可以告诉我,我做错了什么吗? 谢谢。

3 个答案:

答案 0 :(得分:2)

这是错误的......

rules : {
    text1 : {
        optional : true,
        onlyAlphaNumeric: "Only a-n allowed"
    }
},

对于onlyAlphaNumeric:,您只能放truefalse

我对optional:不太确定,但我知道required:有效...所以请将required:设置为false。或者,您可以将其完全保留,因为验证器默认将字段设置为“可选”(required:false),除非您另行指定。

rules : {
    text1 : {
        required : false,
        onlyAlphaNumeric: true
    }
},

看到这个类似的答案......

using the jquery validation plugin, how can I add a regex validation on a textbox?

答案 1 :(得分:0)

您可以在验证方法中添加可选项 -

http://ajax.microsoft.com/ajax/jquery.validate/1.7/additional-methods.js

jQuery.validator.addMethod("alphanumeric", function(value, element) {
    return this.optional(element) || /^\w+$/i.test(value);
}, "Letters, numbers, spaces or underscores only please");

验证 -

rules : {
     text1 : {
         alphanumeric: true
     }
 },

答案 2 :(得分:0)

我认为您的代码必须是这样的:

// Suppose that your method is well defined
jQuery.validator.addMethod("onlyAlphaNumeric", 
    function(value, element) {  
        var regExp = new RegExp(/^[a-zA-Z0-9]+$/);              
        return ((this.optional(element)) || regExp.test(value));
    }
, "Only alpha-numeric characters allowed");

$("#student-search-form").validate({
    rules : {
        text1 : {
        required : false, // optional must be replaced by required
        onlyAlphaNumeric: true // rules are boolean
        }
    },
    messages: {
        text1 : {
            onlyAlphaNumeric: "I can change my message : Only alpha-numeric characters allowed"
        }
    }
});