将验证规则从元素复制到另一个jquery
我正在使用jquery验证,我想将规则从一个元素克隆到另一个元素。可能吗将验证规则从元素复制到另一个jquery,jquery,jquery-validate,Jquery,Jquery Validate,我正在使用jquery验证,我想将规则从一个元素克隆到另一个元素。可能吗 var rule = $('[id=' + elementToCopy + ']').rules(); $(this).rules("add", rule); 您所尝试的似乎是有效的,至少对于像required这样的简单规则是有效的。要按id检索元素时,请确保并使用($(“#”+elementToCopy))。此外,请注意对该方法的限制: 要求父窗体为 就是,, 首先调用$(“form”).validate() 基本上
var rule = $('[id=' + elementToCopy + ']').rules();
$(this).rules("add", rule);
您所尝试的似乎是有效的,至少对于像
required
这样的简单规则是有效的。要按id检索元素时,请确保并使用($(“#”+elementToCopy)
)。此外,请注意对该方法的限制:
要求父窗体为
就是,,
首先调用$(“form”).validate()
基本上,在开始添加/检索规则之前,请确保包含element1
和element2
的form1
和form2
都调用了validate()
我在这里创建了一个简单的示例:
编辑:这似乎也适用于自定义规则:
$.validator.addMethod("onlycharacters", function(value, element) {
return this.optional(element) || /^[A-Za-z]+$/.test(value);
}, "Only characters");
$("#form1").validate({
rules: {
name: {
onlycharacters: true
}
}
});
$("#form2").validate();
var rules = $("#name").rules();
$("#name2").rules("add", rules);
是的,你能做到。但是,如果使用jQuery克隆函数执行此任务,将更加优雅。生成匹配元素集的深度副本
通过第一个参数,您可以复制包含所有事件和属性的元素。下面的脚本复制规则和消息,您拥有的代码仅用于规则。注意,对消息的查询使用的是元素名称,而不是元素id
var rules = $('#elementtocopy').rules();
rules['messages'] = $('form').data('validator').settings["your element name, NOT id"];
$('#newelementid').rules("add", args);
也许,但如果OP不希望所有关联的事件侦听器都与
验证规则一起使用,这可能会产生不正确的结果。@Xhalent:OP在帖子中的任何地方都没有提到错误消息,但您是对的。看这个解决方案,非常相似,效果很好,非常感谢规则['messages']=$('form')。数据('validator')).settings['messages'][element.attr('name')$(本)规则(“删除”)$(本条)。规则(“添加”,规则);