禁用自动创建的字段集的规则?

时间:2014-12-12 19:38:13

标签: jquery jquery-validate

如何禁用.clone()创建的字段集规则?请注意,这些字段不具有相同的名称或ID。有人在此之前做过这件事。

使用jquery validation plugin创建规则。

1 个答案:

答案 0 :(得分:1)

解决方法

好的,问题是验证插件并不真正支持克隆。理想情况下,避免它。但是如果你必须克隆,这是一种解决方法(不是超级健壮)。

http://jsfiddle.net/12s4fqv7/5/

//remove the rules and store them
var rules = [];
$("#f input").each(function(i){ // select each input in the form
    rules[i] = $(this).rules("remove"); // remove and save the rule
});

//clone
$("#f").clone().prop("id","f2").appendTo('body'); // clone it, change the id and do something with it.

//add rules back on
$("#f input").each(function(i){ // select each input again
    $(this).rules("add",rules[i]); // add the rule back
});

可能的替代方案

不是克隆,只需复制HTML并创建一个新的jquery对象:

var copy = $($('#form')[0].outerHTML).prop("id","newID")

这除了基本的html之外什么都没有。


旧答案

据我所知,您使用jQuery validation plugin来验证表单。

仔细查看API,您可以删除以下规则:

$( "#excavationform" ).rules( "remove" );

请注意,.validate不是jquery方法,而是第三方插件。这应该在问题中提到。

修改

应该在克隆上运行

.rules("remove")。所以,

$(clone).rules("remove"); // replace "clone" as needed
//or

另外,请使用clone(true);

进行尝试
$( "#excavationform" ).clone(true).rules("remove");