2017-10-12 2 views
0

Toutes mes instructions if fonctionnent seules, mais lorsque je les ai toutes dans la fonction, je n'arrive pas à les faire fonctionner toutes.La fonction JavaScript avec plusieurs instructions if ne fonctionne pas

function validate() 
{ 
    var x = document.forms["myForm"]["patientName"].value; 
    var y = document.forms["myForm"]["patientId"].value; 
    var z = document.forms["myForm"]["patientEmail"].value; 
    var yL = y.toString().length; 
    var search1 = z.search("@"); 
    var search2 = z.search("."); 
    if (myForm.emailReceipt.checked == true) { 
    if (x == "" || y == "" || Z == ""){ 
      alert("Name, ID, and Email must be filled out"); 
     }else if (search1 == -1 || search2 == -1){ 
      alert("Please submit a valid email address"); 
     } 
    if ((myForm.emailReceipt.checked == false) && (x == "" || y == "")) { 
     alert("Name and ID must be filled out"); 
    } 
    if (yL !== 8){ 
     alert("ID must be 8 digits long"); 
    } 
} 
+1

'Z == « »' devrait être 'z == « »' (minuscule). – llama

+0

Il n'est pas clair si 'if (myForm.emailReceipt.checked == true) {' devrait retourner immédiatement ou non parce qu'il n'est pas fermé. Si cette condition doit se fermer sur toutes les autres conditions alors 'if ((myForm.emailReceipt.checked == false) && ....' ne fonctionnera jamais – hayavuk

+0

Je pense aussi que ce validateur valide inutilement trop de choses à la fois. de cela, vous rencontrez le test de 'x',' y', de 'z' étant vide, suivi d'un test pour' x' ou 'y' étant vide un peu plus tard, ce qui est redondant. le validateur en trois champs spécifiques, puis écrire un validateur qui les compose – hayavuk

Répondre

0

Vous devez écrire votre code de manière propre et formatée, ou utiliser un IDE qui le fait pour vous. Si vous avez fait cela, vous vous rendez compte que vous avez des erreurs de syntaxe à cause des accolades manquantes.

De même, remplacez la lettre Z majuscule par z minuscule dans la deuxième condition.

Enfin, assurez-vous de vérifier votre logique conditionnelle. Par exemple, votre condition externe if vérifie si myForm.emailReceipt.checked == true, mais une condition à l'intérieur de celle-ci vérifie si myForm.emailReceipt.checked == false, qui ne passera jamais. C'est probablement pourquoi les conditions fonctionnent individuellement mais pas ensemble. Parcourez votre logique étape par étape et ajoutez seulement ce qui est nécessaire.

Voici une version sans erreur de votre code, mais vous oblige à marcher à travers votre logique et fixer en conséquence:

function validate() { 
    var x = document.forms["myForm"]["patientName"].value; 
    var y = document.forms["myForm"]["patientId"].value; 
    var z = document.forms["myForm"]["patientEmail"].value; 
    var yL = y.toString().length; 
    var search1 = z.search("@"); 
    var search2 = z.search("."); 

    if (myForm.emailReceipt.checked == true) { 
     if (x == "" || y == "" || z == "") { 
      alert("Name, ID, and Email must be filled out"); 
     } else if (search1 == -1 || search2 == -1) { 
      alert("Please submit a valid email address"); 
     } 

     if ((myForm.emailReceipt.checked == false) && (x == "" || y == "")) { 
      alert("Name and ID must be filled out"); 
     } 

     if (yL !== 8) { 
      alert("ID must be 8 digits long"); 
     } 
    } 
} 
+0

Salut, votre réponse contient l'erreur d'origine, bien que la mise en forme soit beaucoup plus agréable – Fenton

+0

Aussi 'Z' devrait être' z' – Lixus

+0

'Z' changé en 'z'. Cela avec l'accolade manquante thew devrait résoudre toutes les erreurs – Lansana