我在 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>
您的整个问题是由
listview()
函数创建的动态 HTML 引起的。 检查 DOM 发现这会动态创建一个新的 <form>
容器。 由于您已将 listview
放入 <form>
容器中,因此您现在将 <form></form>
嵌套在 <form></form>
中,这是非常无效的 HTML,这也是 jQuery Validate 插件如此意外地工作的全部原因。
解决方案是将列表视图元素放置在
<form>
容器之外。
我来自这篇文章,我面临着与该文章描述的类似问题,但我不知道到底该怎么做,有人可以帮忙吗