【问题标题】:Jquery Validate Switch Validator FormJquery Validate Switch Validator表单
【发布时间】:2014-01-06 19:56:13
【问题描述】:

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

【问题讨论】:

  • 你至少应该给我们看一些代码,这根本没有意义

标签: jquery validation jquery-validate


【解决方案1】:

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

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

然后重新绑定验证器:

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

【讨论】:

    【解决方案2】:

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

    由于页面上不允许有具有相同 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 都应更改为类。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-01
      • 2016-07-17
      • 1970-01-01
      • 2018-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多