Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将验证规则从元素复制到另一个jquery_Jquery_Jquery Validate - Fatal编程技术网

将验证规则从元素复制到另一个jquery

将验证规则从元素复制到另一个jquery,jquery,jquery-validate,Jquery,Jquery Validate,我正在使用jquery验证,我想将规则从一个元素克隆到另一个元素。可能吗 var rule = $('[id=' + elementToCopy + ']').rules(); $(this).rules("add", rule); 您所尝试的似乎是有效的,至少对于像required这样的简单规则是有效的。要按id检索元素时,请确保并使用($(“#”+elementToCopy))。此外,请注意对该方法的限制: 要求父窗体为 就是,, 首先调用$(“form”).validate() 基本上

我正在使用jquery验证,我想将规则从一个元素克隆到另一个元素。可能吗

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')$(本)规则(“删除”)$(本条)。规则(“添加”,规则);