【问题标题】:Client validation does not work on dom manipulated elements?客户端验证不适用于 dom 操作的元素?
【发布时间】:2011-02-02 09:14:35
【问题描述】:

我有一个带有选择元素和输入元素的简单表单。根据选择元素中的值,我可能需要也可能不需要验证输入元素。

我所做的是,我将 input 元素上的“data-val”属性设置为“true”或“false”,具体取决于在 select 元素中选择的内容。这部分正在工作 - 我可以检查 firebug 中属性的值,它确实会根据计划进行更改。

现在,为了让 jquery 不显眼的验证来注意到我调用的 dom 的变化

$.validator.unobtrusive.parse(document)

我尝试传递表单或元素,所以我想传递文档实际上只是我最近的尝试。我尝试传递表单的 jquery 对象以及 dom-form 元素。我还尝试仅验证输入元素调用

$.validator.unobtrusive.parseElement(myElement)

我再次尝试了 jquery 对象以及“nekid dom 元素”。

我在这里错过了什么?

【问题讨论】:

    标签: jquery jquery-validate unobtrusive-validation


    【解决方案1】:

    是的,解析元素不能动态工作。试试这个 - 它对我和其他一些人有用....

    http://xhalent.wordpress.com/2011/01/24/applying-unobtrusive-validation-to-dynamic-content/

    【讨论】:

    • 坏消息。您的扩展似乎只处理新元素,而不是修改过的元素?此外,当对不显眼的库进行更改时,可能需要对您的扩展进行修改。是否可以仅删除/清除表单或单个元素上的验证并重新运行验证(最小化扩展逻辑?)
    • 一旦设置了表单的验证器,解析文档将不会运行。您当然可以清除您喜欢的任何内容并重新开始,但是您可以想象一个大型动态表单可能不是一个优雅的解决方案。显然,扩展与库的耦合方式与非侵入式库与 jquery.validate 耦合的方式相同。我的扩展不会删除规则 - api 已经启用,但它确实适用于尚未验证的现有元素 - 没有“新”元素的概念。
    • 好的 - 所以如果我对输入元素有一个规则,然后由于选择元素的变化而想要删除/禁用它。你的扩展脚本会为此工作吗?
    【解决方案2】:

    类似的问题(我之前没有使用搜索找到) jquery.validate.unobtrusive not working with dynamic injected elements

    有人建议从表单中删除验证器对象,所以调用 parse 会再次解析整个表单。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-20
      • 2013-01-10
      • 1970-01-01
      相关资源
      最近更新 更多