動的に作成される自動完了オプション付きのリストビューを持つ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>
コンテナが動的に作成されていることがわかります。 <form>
コンテナ内にlistview
を配置したので、<form></form>
内に<form></form>
がネストされています。これは非常に無効なHTMLであり、jQuery Validateプラグイン全体の理由です。予想外に動作しています。
解決策は、<form>
コンテナの外側にリストビュー要素を配置することです。