jQuery验证插件始终显示输入

时间:2012-01-24 14:47:22

标签: jquery validation jquery-validate

我坚持使用jQueries验证插件

我的输入总是给我一个错误。你可以在这里找到代码:http://jsfiddle.net/OrangeTux/6zUMd/1/

我想创建一些自定义规则,例如邮政编码,电话号码和其他一些特定号码。因此,我为正则表达式规则创建了一个新方法。此规则正常运行。

$.validator.addMethod("regexp", function(value, element, param) {
     return this.optional(element) || !param.test(value);
});

之后我创建了一个新方法:

jQuery.validator.addMethod('postalCode', function(value, element) {});

然后我使用创建一个新类并添加规则

//add validation rules for each custom method
jQuery.validator.addClassRules({
   postalCode: {
      'postalCode' : true,

       //regexp: /[^[0-9]{10}$]/, //<---- This regex doesn't work
       //email: true              // <----- This rule doens't work either
   }
})

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

你有一些事情有点倒退。首先,regex规则并不完全正确。您希望在规则通过时从方法返回true,因此您应该返回:

return this.optional(element) || param.test(value);

除此之外,添加像这样的自定义规则的首选方法是使用addMethod,然后使用addClassRules添加包含该方法的类规则:

jQuery.validator.addMethod("postalCode", function (value, element, params) {
    return this.optional(element) || /^[0-9]{10}$/.test(value);
}, "Please enter a valid Postal Code");

//add validation rules for each custom method
jQuery.validator.addClassRules({
    postalCode: {
        postalCode: true
   }
});

$("#form").validate({
    debug: true,

    //set place were error is shown
    errorPlacement: function(error, element) {
        error.appendTo(element.parent("td").next("td"));
    },
});

示例: http://jsfiddle.net/LCA9C/