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

问题描述 投票:0回答:2

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

一旦验证处于活动状态,如果您尝试在自动完成字段中输入内容,我会收到此错误。

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

我可以使用它来重现它 JS 小提琴

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

任何建议表示赞赏

谢谢

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

jquery jquery-mobile jquery-validate
2个回答
53
投票

您的整个问题是由

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

解决方案是将列表视图元素放置在

<form>
容器之外。


0
投票

内联编辑 Kendo 网格时无法读取未定义的属性“设置”

我来自这篇文章,我面临着与该文章描述的类似问题,但我不知道到底该怎么做,有人可以帮忙吗

© www.soinside.com 2019 - 2024. All rights reserved.