2010-06-13 12 views
49

Ich versuche, um dynamisch eine Gültigkeitsregel für einige dynamische Steuerelemente hinzufügen:jQuery - Wie dynamisch eine Gültigkeitsregel hinzufügen

$("input[id*=Hours]").rules("add", "required"); 

Doch diese Linie gibt mir die folgende Fehlermeldung:

$. Daten (element.form, "validator") ist null

Definieren von Regeln der statische Weg mit der Validierungsfunktion funktioniert gut. Was mache ich falsch?

Danke, Justin

Antwort

95

Sie müssen .validate() aufrufen, bevor Sie Regeln auf diese Weise, wie diese hinzufügen:

$("#myForm").validate(); //sets up the validator 
$("input[id*=Hours]").rules("add", "required"); 

Die .validate() documentation ein guter Führer, hier ist die kurzen Text über .rules("add", option) ist:

Adds the specified rules and returns all rules for the first matched element. Requires that the parent form is validated, that is, $("form").validate() is called first.

+3

Danke, Aufruf bestätigen zunächst, dass Fehler behoben. Es wird jedoch nur die erste Eingabe mit einer ID wie Hours validiert, anstatt alle zu validieren, irgendeine Idee warum? – Justin

+0

Jede ID ist ein eindeutiges Element im DOM - vielleicht möchten Sie hier eine Klasse verwenden? – cars

+0

jquery validate Arbeit mit dem Namen Attribut der Eingabe nicht die ID, vielleicht ist das Ihr Problem Justin –

2

The documentation sagt:

Haben Sie das gemacht? Die Art der Fehlermeldung weist darauf hin, dass Sie dies nicht getan haben.

3

Stellen Sie außerdem sicher, dass Sie zuerst $("#myForm").validate(); aufgerufen haben. Stellen Sie sicher, dass Ihr dynamisches Steuerelement dem DOM hinzugefügt wurde, bevor Sie die Validierungsregeln hinzufügen.

20

Zur Validierung alle dynamisch generierten Elemente eine spezielle Klasse zu jedem dieser Elemente könnte hinzufügen und verwenden, um jede() Funktion, so etwas wie

$("#DivIdContainer .classToValidate").each(function() { 
    $(this).rules('add', { 
     required: true 
    }); 
}); 
+1

funktioniert wie ein Charme :-) –

+0

Was ist mit Nachrichten? Hier ist ein Beispiel aus der Dokumentation https://jqueryvalidation.org/rules/#example:-adds-minlength:-2-to-an-element-which-isalready-required –

Verwandte Themen