2016-04-29 3 views
-1

J'ai donc ce formulaire où l'utilisateur entre dans un chiffre et leur état. Si un utilisateur saisit wa comme étant leur état et le chiffre 6, POST renvoie true. Cependant, pour une raison quelconque, quand j'entre wa et 5, il retourne toujours vrai quand il ne devrait pas. Je me demandais juste pourquoi cela se produisait.Plusieurs conditions dans IF instruction ne fonctionne pas

Toute aide est grandement appréciée. Merci!

JavaScript

function validatePOST() 
{ 
var POST = false; 
var STATE = document.getElementById("state").value; 
var value = document.getElementById("postcode").value; 
var digit = value.match(/\d/); 

if ((digit == 6) && (STATE === wa)) 
{ 
    POST = true; 
} 


if ((digit == 5) && (STATE === sa)) 
{ 
    POST = true; 
} 

return POST; 

} 
+1

voir si elle se comporte comment vous vous attendez quand '' wa' et sa' sont correctement cités comme ceci: ' » wa'', '' sa''. –

+1

@JacobSee Merci beaucoup, totalement oublié qui fonctionne très bien! – mdnorman38

+0

Pas de problème, content de l'avoir fait fonctionner! –

Répondre

0

Je suppose qu'il est à cause des citations manquantes. Vous devez comparer à une chaîne et non à une valeur stockée dans une variable appelée wa ou sa - dans ce cas, vous ne comptez pas utiliser les guillemets

function validatePOST() 
{ 
var POST = false; 
var STATE = document.getElementById("state").value; 
var value = document.getElementById("postcode").value; 
var digit = value.match(/\d/); 

if ((digit == 6) && (STATE === "wa")) 
{ 
    POST = true; 
} 


if ((digit == 5) && (STATE === "sa")) 
{ 
    POST = true; 
} 

return POST; 

} 

Vous pouvez le faire paraître un peu plus propre de cette façon Utilisez des guillemets doubles pour vos littéraux de chaîne.

if ((digit == 6) && (STATE === "wa")) 
{ 
    POST = true; 
} else if ((digit == 5) && (STATE === "sa")) 
{ 
    POST = true; 
} 
    return POST; 
0

Utilisez STATE==="sa" et STATE==="wa"

+0

Pourquoi? Où? Qu'est ce que ça fait? Avec 'et 'entre les deux? – dakab

+0

Calmez-vous @dakab. Je ne voulais pas dire que l'utilisation ET. Je lui disais. Vous pouvez le voir et n'est pas au format de code comme ci-dessus. Un développeur sait que c'est && et pas .. – CodeLover

+0

C'étaient simplement des interrogatives encourageantes pour améliorer la réponse. – dakab

0

Utilisez des guillemets doubles pour vos littéraux de chaîne.

function validatePOST() 
{ 
var POST = false; 
var STATE = document.getElementById("state").value; 
var value = document.getElementById("postcode").value; 
var digit = value.match(/\d/); 

if ((digit == 6) && (STATE === "wa")) 
{ 
    POST = true; 
} 


if ((digit == 5) && (STATE === "sa")) 
{ 
    POST = true; 
} 

return POST; 

} 

Vous pouvez également lire sur l'utilisation == et === here