2016-09-04 2 views
0

Ich versuche eine Formularüberprüfung durchzuführen, die überprüft, ob ein Dropdown-Menü nicht leer bleibt, alle Eingabebereiche frei lassen und das E-Mail-Feld validieren . Ich habe Funktionen, die abhängig von der Eingabe wahr/falsch zurückgeben. Was ich jetzt zu tun versuche, ist, alle meine Validierungsfunktionen in einer einzigen Funktion zu überprüfen, und wenn es wahr ist, möchte ich ein modales Fenster öffnen. Alle meine Validierungsfunktionen geben true zurück (wie erwartet, das funktioniert einwandfrei), aber meine verschachtelte Funktion gibt false zurück?Überprüfen Sie, ob alle Funktionen wahr sind, und führen Sie dann das modale Fenster aus

function checkAll() { 
    if (ValidateEmail() && checkIfEmpty() && checkDrop()) { 
     console.log(true); 
    } else { 
     console.log(false); 
    } 
} 

function checkDrop() { 
    if ($("#hospitals").val() == null) { 
     console.log(false); 
     return false; 
    } else { 
     console.log(true); 
     return true; 
    } 
} 
function ValidateEmail() { 
    if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(form1.email.value)) { 
     console.log(true); 
     return true; 
    } else { 
     console.log(false); 
     return false; 
    } 
} 

function checkIfEmpty() { 
    $('#form1 input').each(function() { 
     if (!$.trim(this.value).length) { 
      console.log(false); 
      return false; 
     } else { 
      console.log(true); 
      return true; 
     } 
    }); 
} 

Antwort

1

Ihre checkIfEmpty Funktion hat keine Rückgabe

in dir eine $('#form1 input').each(function(){}); Schleife und die Rückkehr in dieser Schleife hast nicht auf die äußeree Funktion übergeben. Grundsätzlich eine return true innerhalb der jQuery .each Funktion stoppt nur die aktuelle Iteration und eine Rückkehr false stoppt die gesamte Schleife. In diesem Fall müssen Sie einen Rückgabewert außerhalb dieser Schleife speichern. Ein Beispiel könnte sein:

function checkIfEmpty() { 
    var returnValue = true; 
    $('#form1 input').each(function() { 
     if (!$.trim(this.value).length) { 
      console.log(false); 
      returnValue = false; 
      return false; // this stops the itteration 
     } else { 
      console.log(true); 
      return true; // this has absolutely no effect in your case 
     } 
    }); 
    return returnValue; 
} 
+0

Vielen Dank !! das hat perfekt funktioniert – user

Verwandte Themen