2012-11-16 8 views
5

Ich habe diesen Code, der die Eingabe des Wertes, wenn leer und zeigt die Fehlermeldung mit einem Twitter Bootstrap popover validieren:Iterate zwischen jedem Eingangswert zu validieren

$(document).on("ready", login_events()); 

function login_events(){ 

    $("#userId, #password").on("change", validateEmpty); 
    $("#loginButton").on("click", validateAll); 

} 

function validateEmpty(){ 

    input = $(this); 
    input.popover({animation: true, placement: 'right', trigger: 'manual', title: 'Field is Empty', content: input.attr("data-empty-message")}); 
    isValid = true; 

    if(input.val() === ""){ 
     input.popover('show'); 
     isValid = false; 
    } 
    else{ 
     input.popover('hide'); 
    } 

    return isValid; 

} 

Das funktioniert perfekt, wenn das Ereignis Änderung erfolgt ist, aber ich möchte eine andere Funktion ausführen, die zwischen den einzelnen Eingaben im Formular iteriert, validiere, ob sie leer ist (validateEmpty()) und preventDefault, wenn irgendwelche leer sind.

Wie man sehen kann ich das Click-Ereignis Setup für die #loginButton haben die validateAll Funktion, die ich so etwas wie dieses haben zu laufen, aber einen richtigen Weg, es zu tun kann nicht herausfinden:

function validateAll(event){ 

    $("#loginForm input").each(validateEmpty); 

} 

Antwort

1

diesen Verschluss Versuchen :

function validateAll(event){ 
    var isValid = true; 
    $("#loginForm input").each(function(){ 
     input = $(this); 
     input.popover({animation: true, placement: 'right', trigger: 'manual', title: 'Field is Empty', content: input.attr("data-empty-message")}); 
     isValid = true; 

     if(input.val() === ""){ 
      input.popover('show'); 
      if (isValid) 
       isValid = false; 
     } 
    }); 
    if (!isValid) { 
     alert('form is not valid!'); 
    } 
} 
+0

Danke Mann, ich könnte etwas herausfinden, wie Sie mit dem isValid im Code umgehen. Ich habe die Antwort unten geschrieben. –

0

Dank @VMAtm! Ich habe die Funktion innerhalb der einzelnen() ersetzt, um die validateEmpty-Funktion auszuführen, die ich bereits erstellt habe. Es funktioniert jetzt großartig!

function validateAll(event){ 

    isValid = true; 

    $("#loginForm input").each(validateEmpty); 

    if(!isValid){ 
    event.preventDefault(); 
    } 
} 
Verwandte Themen