jQuery Validate Plugin: Wie kann ich nach der Initialisierung eines Validators Gruppen hinzufügen?

8

Auf unserer Website verwenden wir ein eingebettetes Anmeldeformular von unserem ESP, das das jQuery validate plugin verwendet. Wir passen das Formular ein wenig an, fügen ein paar benutzerdefinierte Felder (Vorname, Nachname) hinzu und wir wollen, dass sie gruppiert werden, so dass es nur eine Fehlermeldung für beide Felder gibt.

Da der Validator des Formulars bereits initialisiert wurde, muss ich einige Dinge dynamisch hinzufügen. Das Plugin stellt die Regeln ("add", rules) zur Verfügung, mit denen Validierungsregeln dynamisch hinzugefügt werden können, obwohl wir dafür nur Klassennamen verwenden. Aber es gibt keine klare Möglichkeit, die Option groups zu setzen, nachdem der Validator initialisiert wurde.

Ich habe ein paar verschiedene Dinge ausprobiert, um das zu erreichen, aber keines funktioniert:

%Vor%

Die errorPlacement-Funktion wird dem Validierer hinzugefügt, nicht jedoch die Gruppen.

Ich habe auch versucht, die Option groups explizit zu setzen, aber das hat auch keine Wirkung.

%Vor%

Ich bin völlig ratlos, wie ich das erreichen soll.

    
aaronp 27.01.2010, 21:09
quelle

4 Antworten

5

Ich suchte nach einer Möglichkeit, dies auch zu tun und fand eine Lösung im jQuery-Hilfeforum: Ссылка

    
Stephanie Hobson 11.03.2011, 22:22
quelle
9

Ich hatte kürzlich dasselbe Problem und habe eine andere Lösung gefunden.

Das Szenario

Wir haben eine Tabelle, die dynamisch wächst, wenn Benutzer Zeilen hinzufügen (oder löschen). Jede neue Zeile enthält mehrere Elemente, und wir möchten, dass sich die Eingabeelemente jeder Zeile in einer einzelnen Validierungsgruppe befinden - eine pro Zeile -, weil wir nur eine Fehlerbeschriftung für jede Zeile haben wollen. Da die Zeilen dynamisch hinzugefügt werden - nachdem wir $ ('# the-form') aufgerufen haben. Validate () - mussten wir jedes Mal, wenn der Benutzer eine Zeile hinzufügt, eine neue Gruppe hinzufügen .

Unsere Lösung

Wir haben das Validator-Objekt gehackt, indem wir sein Gruppenmitglied direkt geändert haben:

%Vor%

Diese letzten beiden Zeilen entsprechen

%Vor%

in den Validatoroptionen, kann jedoch nach dem ersten Aufruf von validate () hinzugefügt werden.

Es ist ein Hack in die Interna von jquery.validate, aber es funktioniert (mit jquery validate v1.9.0).

Schließlich, um die Frage des OP direkt zu beantworten: Statt dessen:

%Vor%

versuche das:

%Vor%     
ron rothman ℝℝ 13.03.2012 16:42
quelle
1

Ich habe jede Methode ausprobiert, um Gruppen dynamisch hinzuzufügen. Der einzige, der für mich arbeitete, basierte auf Rons Methode oben. Ich hatte eine Tabelle mit Zeilen, die dynamisch hinzugefügt wurden und jeweils eine Anzahl von Feldern enthielten.

%Vor%     
The Salt 20.12.2012 13:44
quelle
0

Geben Sie ein errorElement: "span" ein, das zur Anzeige des Fehlers an der gewünschten Stelle verwendet wird. wobei benutzername_gruppe innerhalb des span-Tags

codiert wird %Vor%

Gruppen: {
Benutzername: "FNAME LNAME"},
errorElement: "span" ,

errorPlacement: Funktion (Fehler, Element) {
if (element.attr ("name") == "FNAME" || element.attr ("name") == "LNAME") {             error.insertAfter ("# Benutzername_Gruppe");
} sonst {
error.insertAfter (Element);

}}}));

    
Vicky 13.12.2010 12:53
quelle