4

是否可以将 JQuery Validate 与自定义选择器和验证逻辑一起使用?类似于以下内容:

$('#myForm').validate({
    rules: {
        '[myattr="foo"]': function(content) { return $(content).val().contains('bar'); }  
    }
})

我似乎无法在文档中找到答案。

谢谢。

4

1 回答 1

7

要在 中声明规则.validate(),您必须使用该name属性。一种解决方法是使用rules('add')允许您使用任何 jQuery 选择器的方法。(然而,尽管选择了分配规则的方法,但每个字段仍必须包含唯一的name属性。)

$('[myattr="foo"]').rules('add', {
    required: true,
    messages: {
        required: "optional custom message"
    }
});

请参阅: http ://docs.jquery.com/Plugins/Validation/rules#.22add.22rules

备注

  • 确保您使用最新版本的插件,该插件最近才修复了使用messagesinside ofrules('add')违反规则的错误。

  • 如果您的选择器类似于class要选择多个元素的地方,则必须将其包装rules('add')在 jQuery.each()中。

$('.myclass').each(function() {
    $(this).rules('add', {
        required: true,
        messages: {
            required: "optional custom message"
        }
    });
});

要将自定义函数用作规则,您只需使用该addMethod方法创建方法/规则,然后像任何其他规则一样声明它。

 $.validator.addMethod('myrule', function(value, element, params) {
     // your function
     // return true to pass
     // return false to fail
 }, "error message");

 $('#myform').validate({
     rules: {
         myfield: {
             required: true,
             myrule: true
         }
     }
 });

请参阅:http ://docs.jquery.com/Plugins/Validation/Validator/addMethod#namemethodmessage

于 2013-04-01T18:46:51.043 回答