jQuery Validate - Fügt die Fehlerklasse der Eltern-Div hinzu

8

Ich verwende das jQuery Validate-Plugin und finde nie eine gute Möglichkeit, Fehler für Checkboxen anzuzeigen. Ich möchte alle Kontrollkästchen-Beschriftungen in rot hervorheben, wenn keine ausgewählt sind, und entscheide mich, dies zu tun, indem ich eine Fehlerklasse zum div hinzufüge, das die Ankreuzfelder und Markierungsfelder enthält. Es scheint jedoch nicht die Klasse hinzuzufügen. Wähle ich das div nicht richtig aus?

HTML:

%Vor%

Javascript:

%Vor%

CSS:

%Vor%     
Michael 29.10.2011, 20:57
quelle

3 Antworten

7
%Vor%     
user1012851 29.10.2011, 20:59
quelle
34

Das sollte funktionieren:

%Vor%

Überprüfen Sie die Dokumentation auf weitere Optionen:

Luis Evrythng 20.06.2013 10:26
quelle
2

Aus meiner Antwort zu fügen Sie eine Klasse zum übergeordneten div hinzu, wenn der Validierungsfehler bei der jquery-Validierung auftritt , weil ich glaube, dass dies einen Mehrwert darstellt die vorhandenen Antworten zu dieser Frage ...

Access Validator Einstellungen

Die erste Aufgabe besteht darin, das Objekt settings auf dem Validator Ihres Formulars zu ändern. Sie können dies auf eine der folgenden Arten tun:

  1. Bevor das Formular für alle Formulare geladen wird, rufen Sie jQuery.validator.setDefaults() auf
  2. Beim Initialisieren des Formulars durch Übergabe von Optionen auf .validate([options])
  3. Nach der Initialisierung durch Auffinden des Validator-Objekts im Formular mit $("form").data("validator").settings

Da Sie MVC verwenden, kommt Option # 2 nicht in Frage, da die unauffällige Validierung automatisch erfolgt initialisiere das Formular. Lassen Sie uns also Option 3 für die Zukunft verwenden - das Ziel besteht darin, nur die Einstellungen im Formular anzupassen.

Standardverhalten außer Kraft setzen

Die Standardmethoden, die wir ändern möchten, sind highlight und unhighlight , die ungültige Felder hervorheben oder die von der Highlight-Option vorgenommenen Änderungen rückgängig machen. Hier ist ihr Standardverhalten entsprechend dem Quellcode :

%Vor%

Sie haben also auch hier ein paar Optionen.

  1. Ersetzen Sie diese Funktionen vollständig und schreiben Sie sie selbst
  2. Wickeln Sie diese Funktionen um und nennen Sie sie wie normal, fügen Sie jedoch Ihren eigenen benutzerdefinierten Code vor oder nachher hinzu.

Option 1 - Ersetzen Großhandel

Diese Route ist ziemlich einfach. Schreib einfach was du willst. Vielleicht Samen aus dem Quellcode, vielleicht machen Sie Ihr eigenes Ding.

%Vor%

Option 2 - Umbruchfunktionen

Dies ist weniger aufdringlich, also wahrscheinlich in den meisten Fällen vorzuziehen.

Da Sie letztendlich den Wert von valSettings.highlight ersetzen werden, benötigen Sie Zugriff auf eine saubere ursprüngliche Version der ursprünglichen Funktion. Sie können Ihre eigenen speichern oder einen der globalen Standardwerte herunterladen

%Vor%

Im Hinblick auf das Umschließen von JavaScript-Funktionen gibt es einige Beispiele hier , hier und hier ). Hier ist ein analysiertes Beispiel aus einem dieser Beispiele, das dabei hilft, den this -Kontext über Funktionsaufrufe zu binden, die Artigkeit der übergebenen Argumente beizubehalten und den Rückgabewert beizubehalten:

%Vor%

Dann müssen Sie auch schnell definieren, welches zusätzliche Verhalten Sie bei jedem Anruf auslösen möchten. In diesem Fall suchen wir nach dem nächsten Elternteil div und aktualisieren seine Klassen wie folgt:

%Vor%

Alles einpacken (siehe was ich dort gemacht habe)

%Vor%

Wenn wir also alle oben genannten Funktionen kombinieren, sollte es etwa so aussehen:

Arbeitsdemo in Stack Snippets und jsFiddle

%Vor% %Vor% %Vor%
    
KyleMit 20.11.2017 22:55
quelle