JQuery使用自定义选择器和逻辑进行validation
是否可以将JQuery Validate与自定义选择器和validation逻辑一起使用? 以下内容:
$('#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')
违反规则的错误。 -
如果你的选择器类似于你想要选择多个元素的类,你必须在jQuery
.each()
包装rules('add')
.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