微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JQuery验证未捕获的TypeError:无法读取未定义的属性“设置”

我在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>

解决方法

您的整个问题是由listview()函数创建的动态HTML引起的.检查DOM会发现这会动态创建一个新的< form>容器.由于您已将listview放在< form>中容器,你现在有< form>< / form>嵌套在< form>< / form>中,这是非常无效的HTML,以及jQuery Validate插件如此出乎意料地工作的全部原因.

解决方案是将listview元素放在< form>之外.容器.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐