【问题标题】:JQuery Validate Uncaught TypeError: Cannot read property 'settings' of undefinedJQuery Validate Uncaught TypeError:无法读取未定义的属性“设置”
【发布时间】:2016-04-14 00:40:58
【问题描述】:

我在一个 JQuery Mobile 表单上使用 JQuery Validate,该表单有一个列表视图和一个动态创建的自动完成选项。

如果您在验证激活后尝试在自动完成字段中键入内容,我会收到此错误。

我可以看到问题与 jQuery Mobile 创建的用于保存过滤器输入的表单有关,但我不知道如何阻止 jQuery Validate 验证字段。

我可以使用 JS Fiddle

(按验证,然后在过滤器框中输入)

任何建议表示赞赏

谢谢

<body>
<script>
    jQuery.validator.setDefaults({
        ignore: '[data-type="search"]'

    });
</script>
<form>
    <input required>
    <ul id="ac" data-inset="true" data-filter="true" data-filter-reveal="true" data-filter-placeholder="Search cars...">
        <li><a href="#">Acura</a>

        </li>
        <li><a href="#">Audi</a>

        </li>
    </ul>
    <button onclick="$('#ac').attr('data-role','listview');$('#ac').listview();$('form').validate();">Validate</button>
</form>

【问题讨论】:

  • 您使用的是 jQM 1.3 吗?还是更新版本?

标签: jquery jquery-mobile jquery-validate


【解决方案1】:

您的整个问题是由 listview() 函数创建的动态 HTML 引起的。检查 DOM 会发现这会动态创建一个新的 &lt;form&gt; 容器。由于您已将listview 放置在您的&lt;form&gt; 容器中,因此您现在将&lt;form&gt;&lt;/form&gt; 嵌套在&lt;form&gt;&lt;/form&gt; 中,这是非常无效的HTML,也是jQuery Validate 插件如此意外工作的全部原因。

解决方案是将列表视图元素放在 &lt;form&gt; 容器之外。

【讨论】:

  • “您现在有一个
    嵌套在一个
    中,这是非常无效的 HTML,也是 jQuery Validate 插件如此意外地工作的全部原因”这部分解决了我的问题
  • 当心,一些*插件以编程方式添加&lt;form&gt;,并为此导致验证失败。 [hayageek.com/docs/jquery-upload-file.php]*
猜你喜欢
  • 1970-01-01
  • 2018-01-19
  • 2015-05-07
  • 1970-01-01
  • 2019-09-07
  • 2021-04-28
  • 2017-07-20
  • 1970-01-01
  • 2020-03-28
相关资源
最近更新 更多