Jquery验证开关验证器表单

时间:2014-01-06 19:56:13

标签: jquery validation jquery-validate

所以我有一个表格,表格A.最初验证员附在表格A上,但是在某些时候我克隆了表格A,这就产生了表格B.现在,我希望表格A中的相同规则适用于表格B.但是,目前验证器正在与表单一起克隆,并且验证器仍然指向表单A.因此,总而言之,我的新克隆验证器指向表单A而不是表单B.什么是解决的理想方法这个问题(越黑越越好:))

2 个答案:

答案 0 :(得分:1)

所以我意识到我的问题有点不具体,但是我已经解决了我遇到问题的问题。我要解决的问题是首先删除克隆上的验证器,如下所示:

clone.find('form').removeData("validator");

然后重新绑定验证器:

clone.find('form').validate({        
    //more stuff here
});   

答案 1 :(得分:0)

克隆后,您将拥有两个相同的代码块。

由于不允许在页面上具有相同ID的元素,因此您可以更改或重命名ID属性。向我们展示代码,我们将向您展示如何。

如果有javascript / jQuery事件绑定到这些元素,任何重命名的元素都将离开DOM并变得像注入元素(实际上,克隆元素已经被认为是注入元素,因为它们不存在于DOM中原本)。因此,您需要对这些元素使用jQuery .on()方法。例如,假设您克隆了附加了点击事件的<input>字段:

<input id="book_1" type="text" />

克隆后,您将有两个相同的输入字段:

<input id="book_1" type="text" />
<input id="book_1" type="text" />

你可以重命名第二个输入字段(我们可以帮助解决这个问题,可能是一个新问题),所以它是:

<input id="book_1" type="text" />
<input id="book_2" type="text" />

但是必须更新任何代码,如下所示:

$('#book_1').click(function() {
    alert('Clicked me!');
});
$(document).on('click', '#book_2', function() {
    alert('Clicked me!');
});

请注意,您也可以将后一个结构与原始元素一起使用,但不能将第一个结构与注入(或修改)元素一起使用。

此外,由于您不得在页面上使用具有相同名称的ID,因此您不希望更新的任何ID都应更改为类。

如果您还有其他问题,我建议您创建第二个更具体的问题并发布您的代码,以便我们可以帮助您以编程方式完成所需内容。