2012-12-19 22 views
5

Cosa c'è di sbagliato in questa condizione IF? Quando restituisco il valore EEID come 123456, non dovrebbe entrare in questa condizione. Ma vedo che sta arrivando. Qualcuno può farmi sapere cosa sto sbagliando?cosa c'è di sbagliato in questa condizione in Javascript?

if ((EEID.value.length != 6) || (EEID.value.length != 11)) { 
     alert(EEID.value.length); //This shows that the value length = 6 
     alert("Your Member ID must be a 6 digit or 11 digit number."); 
     EEID.focus(); 
     return false; 
     } 
+4

L'uso invece di OR. 'EEID.value.length! = 11' è' true' per '123456', e' false OR true' è 'true'. –

+0

Ma la lunghezza del valore potrebbe essere 6 o 11. – Ditty

+5

Passerà sempre. In pratica stai chiedendo se la lunghezza non è 6 e 11 allo stesso tempo – climbage

risposta

11

La condizione è soddisfatta perché EEID.value.length non è 11. Il o (||) permette sia! = 6 o! = 11 per soddisfare la condizione if.

È necessario modificare la o (||) ad un e (& &) in quanto tale:

if ((EEID.value.length != 6) && (EEID.value.length != 11)) { 
    alert(EEID.value.length); 
    alert("Your Member ID must be a 6 digit or 11 digit number."); 
    EEID.focus(); 
    return false; 
} 

In questo modo, la Se la condizione è soddisfatta solo quando EEID.value.length non è 6 e non 11.

+1

Grazie per aver rimosso quel commento inutile che aveva. Non sono sicuro di cosa si trattasse anche. Risposta molto bella. +1 – War10ck

+1

@ Fls'Zen - Grazie. Questo funziona. – Ditty

1

Cosa avete in origine, (!P || !Q), restituisce vero per tutto il tempo, come EEID.value.length non può essere sia 6 e 11 allo stesso tempo. Quando uno è falso, l'altro è vero, e viceversa, quindi è sempre vero.

Date un'occhiata a De Morgan's laws, o più precisamente che

(!P && !Q) == !(P || Q) 

che è simile a quello che hai, ma afferma che la condizione è vera se EEID.value.length è né 6o11. (nota che io preferirei il lato destro come si nega una sola volta.) Quindi, in sostanza, è possibile scrivere le vostre condizioni come

if ((EEID.value.length != 6) && (EEID.value.length != 11)) { 

o

if (!(EEID.value.length == 6 || EEID.value.length == 11)) { 
+2

+1, l'ultima istruzione if rappresenta al meglio la frase "se EEID.value.length non è 6 o 11" e deve essere utilizzata. – jbabey

Problemi correlati