Praxistip: Output Element des jQuery Validate Plugin ändern
Das allseits bekannte jQuery Plugin um Formularfelder zu validieren funktioniert im Standardszenarion sogut wie problemlos.
Schwieriger wird es schon wenn mehrere Plugins auf ein Formular angewendet werden, bei denen die Plugins eigene DOM-Elemente hinzufügen. Beispielsweise jqTransform
Glücklicherweise bietet das validate Plugin dafür eine wunderbare Funktion, nämlich errorPlacement.
Die Funktion sieht so aus:
1 2 3 | errorPlacement: function(error, element) { error.appendTo( element.TRAVERSINGFUNKTION ); }, |
Nehmen wir ein Formular:
1 2 3 4 5 6 7 | <form action="somescript.php" id="form" method="get"> <input type="text" name="user"> <label><label> <input type="text" name="pw"> <label><label> </form> <div id="error"></div> |
Per Default wird vom validate Plugin ein Label-Tag hinter jedes input-Feld eingefügt. Will man nun den error an einer anderen Stelle zeigen kann man die Funktion folgendermaßen umschreiben:
1 2 3 4 5 | $("#form").validate({ errorPlacement: function(error, element) { error.appendTo( element.next() ); } }); |
Die Fehlermeldungen würde nun ausgehend vom input (element) in das nächste DOM Element, in unserem Fall das label-Tag, geschrieben werden.
Natürlich haben wir mit diesem Beispiel nur wieder das Ausgangsverhalten des Plugins erreicht. Dieses Prinzip lässt leicht auf komplexere Anwendungsfälle übertragen. Wie beispielsweise bei erwähntem jqTransform, bei dem um das input-Feld mehrere Divs gelegt werden. Die Fehlermeldung des Validate Plugins wird dann unterhalb (auf z-Ebene) der Felder angezeigt. Durch travesieren durch den DOM-Baum können die Fehlermeldungen beliebig positioniert werden.










Letzte Kommentare