2014-12-16 20 views
10

Ich verwende JQuery Validate für ein JQuery Mobile-Formular, das über eine Listview mit einer Auto Complete-Option verfügt, die dynamisch erstellt wird.JQuery Validate Uncaught TypeError: Eigenschaft 'Einstellungen' von undefined kann nicht gelesen werden

Ich bekomme diesen Fehler, wenn Sie versuchen und in das Auto-Vervollständigen-Feld eingeben, sobald die Validierung aktiv ist.

Ich kann sehen, dass das Problem mit dem Formular verwandt ist, das jQuery Mobile erstellt, um die Filtereingabe zu halten, aber ich kann nicht herausfinden, wie jQuery Validate von dem Überprüfen des Felds beendet wird.

Ich kann es JS Fiddle

mit reproduzieren (Press Validate und dann in das Filterfeld eingeben)

Irgendwelche Vorschläge geschätzt

Dank

<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

verwenden Sie jQM 1.3? oder neuere Version? – Omar

Antwort

42

Ihr gesamtes Problem wird durch das dynamische HTML verursacht, das von der listview()-Funktion erstellt wird. Wenn Sie das DOM überprüfen, wird dadurch dynamisch ein neuer <form> Container erstellt. Da Sie listview innerhalb Ihres <form> Containers platziert haben, haben Sie jetzt <form></form> verschachtelt innerhalb <form></form>, was sehr ungültiger HTML ist, und der ganze Grund, warum das jQuery Validate Plugin so unerwartet funktioniert.

Die Lösung besteht darin, Ihr ListView-Element außerhalb Ihres <form> Containers zu platzieren.

+1

„Sie haben jetzt ein

innerhalb eines
verschachtelt, die sehr ungültige HTML ist und der ganze Grund der jQuery Validate-Plugin so unerwartet arbeitet“ dieser Teil mein Problem –

+0

Vorsicht gelöst, einige * Plug-Ins ein '

' programmatisch hinzufügen und make validate genau dafür fehlschlagen. [http://hayageek.com/docs/jquery-upload-file.php]* – Petruza

+0

@ VeyselÖzdemir Wenn dies Ihr Problem gelöst hat, sollten Sie vielleicht die Antwort hier offiziell akzeptieren. – rumblestrut

Verwandte Themen