我在JQuery Mobile表单上使用JQuery Validate,该表单具有listview,其中包含动态创建的Auto Complete选项。
如果您尝试在验证处于活动状态时输入自动完成字段,则会出现此错误。
我可以看到问题与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>
答案 0 :(得分:43)
您的整个问题是由listview()
函数创建的动态HTML造成的。检查DOM会发现这会动态创建一个新的<form>
容器。由于您已将listview
放置在<form>
容器中,因此现在<form></form>
嵌套在<form></form>
内,这是非常无效的HTML,并且jQuery Validate插件的全部原因是意外地工作。
解决方案是将listview元素放在<form>
容器之外。