web-dev-qa-db-ja.com

JQuery Validate Uncaught 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>
12
user3446526

listview()関数によって作成された動的HTMLが原因で問題全体が発生しています。 DOMを調べると、これにより新しい<form>コンテナが動的に作成されていることがわかります。 <form>コンテナ内にlistviewを配置したので、<form></form>内に<form></form>がネストされています。これは非常に無効なHTMLであり、jQuery Validateプラグイン全体の理由です。予想外に動作しています。

解決策は、<form>コンテナの外側にリストビュー要素を配置することです。

44
Sparky