jQuery Validate Plugin - Trigger Validierung eines einzelnen Feldes

89

Ich habe ein Formular, das optional über Facebook Connect vorab ausgefüllt werden kann. Sobald ein Benutzer eine Verbindung herstellt, werden sein Name und seine E-Mail-Adresse automatisch ausgefüllt. Das Problem besteht darin, dass die Remote-Validierung nicht ausgelöst wird, um zu überprüfen, ob die E-Mail bereits vorhanden ist.

Gibt es eine Möglichkeit, die Validierung nur für dieses Feld aufzurufen? Etwas wie:

$('#email-field-only').validate()

wäre eine idee. Durchsuchte die Dokumente ohne Glück.

Ryan
quelle

Antworten:

146

Diese Methode scheint zu tun, was Sie wollen:

$('#email-field-only').valid();
Gregoire
quelle
4
Hinweis: Der Name des Formularelements funktioniert auch mit dieser Funktion, dh $('input[name=email-field-only]').valid();auch
Raptor
1
Was ist das Problem? Wenn ich diese Methode verwende, bricht meine Validierung ab
Nakajuice
2
Diese Lösung überprüft das gesamte Formular und zeigt die Fehlermeldungen für alle Felder an.
Pablo
@haemhweg, vielleicht haben Sie die .validate () -Methode nicht aufgerufen , bevor Sie versucht haben, die .valid () zu verwenden ? Die Dokumente: jqueryvalidation.org/valid
userfuser
1
Die API hat sich geändert, verwenden Sie die Antwort von Paul
Anima-t3d
23

Verwendung Validator.element():

Überprüft ein einzelnes Element, gibt true zurück, wenn es gültig ist, andernfalls false.

Hier ist das in der API gezeigte Beispiel:

var validator = $( "#myform" ).validate();
validator.element( "#myselect" );

.valid()validiert das gesamte Formular, wie andere darauf hingewiesen haben. Die API sagt:

Überprüft, ob das ausgewählte Formular gültig ist oder ob alle ausgewählten Elemente gültig sind.

Paul
quelle
20

Aus irgendeinem Grund funktionieren einige der anderen Methoden erst, wenn das Feld fokussiert / verwischt / geändert wurde oder ein Submit versucht wurde ... das funktioniert bei mir.

$("#formid").data('validator').element('#element').valid();

Musste das Skript jquery.validate durchsuchen, um es zu finden ...

Tracker1
quelle
1
Dies ist, was für mich funktioniert hat, habe ich auch .valid()am Ende hinzugefügt, so dass es für mich aussah. $("#Form").data('validator').element('input[name=__Suburb]').valid(); Ich glaube, wenn Sie es nicht nach ID auswählen, könnte dies erforderlich sein.
Mihai P.
2
Ich glaube nicht, dass sie .valid()am Ende des Ausdrucks stehen. Die .element()Funktion gibt ein boolesches Ergebnis zurück ( docs | src ). Wenn ich versuche, .valid () aufzurufen, erhalte ich die Fehlermeldung: "Ungefangener Typfehler: $(...).data(...).element(...).validist keine Funktion"
KyleMit
Haben Sie den Validator an das Formular angehängt? Es ist ein paar Jahre her, seit ich die JQuery-Validierung verwendet habe ... Die API hierfür hat sich möglicherweise geändert. Zu der Zeit musste ich Interna durcharbeiten, um das oben genannte zu finden. Es wurde nicht in der Dokumentation veröffentlicht, daher hat sich die Struktur möglicherweise geändert, seit ich das letzte Mal nachgesehen habe.
Tracker1
16
$("#FormId").validate().element('#FieldId');
Aslanpayi
quelle
2
Ich bevorzuge diese Methode, es ist ein schöner 1 Liner. Funktioniert super, danke.
Andy
1
Dies ist die perfekte Antwort ohne Fehler mit gültigem Rückgabetyp
Kaushik Thanki
7

Wenn Sie Ihre Validierung einrichten, sollten Sie das Validatorobjekt speichern. Hiermit können Sie einzelne Felder validieren.

<script type="text/javascript">
var _validator;
$(function () {    
     _validator = $("#form").validate();   
});

function doSomething() {    
     _validator.element($('#someElement'));
}
</script> 

- Kreuz mit dieser ähnlichen Frage gepostet

ShaneBlake
quelle
7

Wenn Sie einzelne Formularfelder validieren möchten, aber nicht möchten, dass die Benutzeroberfläche ausgelöst wird und Validierungsfehler angezeigt werden, können Sie die Validator.check () -Methode verwenden, die zurückgibt, wenn ein bestimmtes Feld die Validierung besteht oder nicht.

Hier ist ein Beispiel

var validator = $("#form").data('validator');
if(validator.check('#element')){
    /*field is valid*/
}else{
    /*field is not valid (but no errors will be displayed)*/
}
Dmitry Komin
quelle
0

Falls Sie die Validierung für "einige Elemente" (nicht alle Elemente) in Ihrem Formular durchführen möchten. Sie können diese Methode verwenden:

$('input[name="element-one"], input[name="element-two"], input[name="element-three"]').valid();

Hoffe es hilft allen :)

BEARBEITET

Peps
quelle
-6
$("#element").validate().valid()
John
quelle