2010-04-29 14 views
67

ich eine Form haben, die gegebenenfalls vorgefüllt werden kann via facebook connect. Sobald ein Benutzer eine Verbindung herstellt, werden sein Name und seine E-Mail-Adresse automatisch ausgefüllt. Das Problem besteht darin, dass dies nicht dazu führt, dass die Remote-Überprüfung überprüft, ob die E-Mail bereits existiert.jQuery Validate Plugin - Trigger-Validierung von Einfeld

Gibt es eine Weise, die ich die Validierung allein auf diesem Gebiet nennen könnte? Etwas wie:

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

wäre Idee. Durch die Dokumente ohne Glück gesucht.

Antwort

121

Diese Methode scheint zu tun, was Sie wollen:

$('#email-field-only').valid(); 
+0

Dank! Ich wusste nicht, ... – brainondev

+4

Hinweis: Form Elementname funktioniert auch mit dieser Funktion, dh '$ ('input [name = E-Mail-Feld-only]') gültig();' funktioniert auch – Raptor

+1

, was das Problem ist. ? Wenn ich diese Methode verwende, bricht meine Validierung – nakajuice

5

Wenn Sie Ihre Validierung einrichten, sollten Sie den Validator-Objekt sein zu speichern. Sie können damit einzelne Felder validieren.

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

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

- cross posted mit this similar question

-6
$("#element").validate().valid() 
14

Aus irgendeinem Grund einige der anderen Methoden nicht funktionieren, bis das Feld/fokussiert wurde verwischten/geänderten oder ein vorlegen versucht wurde ... das funktioniert für mich.

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

war durch das jquery.validate Skript zu graben, um es zu finden ...

+1

Dies ist, was für mich gearbeitet, habe ich auch noch 'Es gilt() 'Am Ende sah es nach mir' $ ("# Form").data ('validator'). element ('input [name = __ Vorort]'). valid(); 'Ich glaube, dass, wenn Sie es nicht per ID auswählen, dies erforderlich sein könnte. –

+0

Ich glaube nicht '.valid()' gehören am Ende des Ausdrucks. Die '.element()' Funktion gibt ein boolesches Ergebnis zurück ([docs] (https://jqueryvalidation.org/Validator.element/) | [src] (https://github.com/jquery-validation/jquery-validation) /blob/1.16.0/dist/jquery.validate.js#L503)). Wenn ich versuche, .valid() aufzurufen, erhalte ich folgende Fehlermeldung: * "Uncaught TypeError:' $ (...). Data (...). Element (...). Valid' ist keine Funktion "* – KyleMit

+0

Haben Sie den Validator an das Formular angehängt? Es ist ein paar Jahre her, seit ich die JQuery-Validierung verwendet habe ... Die API dafür könnte sich geändert haben. Zu der Zeit musste ich durch Interna arbeiten, um das Obige zu finden. Es wurde nicht in der Dokumentation veröffentlicht, so dass sich die Struktur seit meinem letzten Blick verändert haben könnte. – Tracker1

7
$("#FormId").validate().element('#FieldId'); 
+1

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ültigen Rückgabetyp –

9

Verwendung Validator.element():

Validates a single element, returns true if it is valid, false otherwise.

Hier wird das Beispiel in der API dargestellt ist:

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

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

Checks whether the selected form is valid or whether all selected elements are valid.

+0

Works, danke. – Andy

3

Wenn Sie einzelne Formularfeld überprüfen möchten, wollen aber nicht für UI ausgelöst werden und alle Validierungsfehler angezeigt werden, können Sie prüfen, Validator.check() Methode zu verwenden, die zurückgibt, wenn Gegebenes Feld besteht Validierung oder nicht.

Hier ist Beispiel

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

Ich war so lange auf der Suche nach dieser Antwort! Nur so konnte das Fehler-Label nicht angezeigt werden! –