使用自定义选择器和逻辑进行验证

JQuery Validate with custom selectors and logic

本文关键字:验证 自定义 选择器      更新时间:2023-09-26

是否可以使用JQuery Validate与自定义选择器和验证逻辑?

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

我似乎在文档中找不到这个问题的答案。

谢谢。

要在.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

指出

:

  • 请确保您使用的是最新版本的插件,该插件最近才修复了在rules('add')中使用messages的错误

  • 如果你的选择器类似于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