To nie zwraca null
, jeśli użytkownik trafi OK - zwróci pusty ciąg znaków. Prawdopodobnie nie testujesz poprawnie wartości zwracanej. Jeśli chcesz przetestować pomiędzy trzech różnych stanach w obie strony, można to zrobić tak:
var oldVal = 'something';
var newVal = prompt("Enter new value:", oldVal);
if (newVal === "") {
// user pressed OK, but the input field was empty
} else if (newVal) {
// user typed something and hit OK
} else {
// user hit cancel
}
demo robocza: http://jsfiddle.net/jfriend00/Kx2EK/
Twój komentarz sugeruje, że używasz tego kodu, aby przetestować wynik:
if(!newVal || oldVal == newVal)return false;
Gdy użytkownik ściąga z boiska i naciska przycisk OK, newval będzie ""
(pusty ciąg znaków). !newVal
będzie true
, więc wrócisz false
. Pusty ciąg jest wartością falsey, podobnie jak null
. Trzeba bardziej jawnie sprawdzić null
tak:
if (newVal === null || newVal === oldVal) {
// cancel button was hit
// or the same value was entered
return false;
}
demo tej logiki pracy: http://jsfiddle.net/jfriend00/ynwBx/
Uwaga: używam ===
aby zapobiec javascript tłumacza od jakiegokolwiek typu odlew jak chcę tylko jawnie sprawdź dla null
.
'prompt' nie zwraca NULL, gdy wejście jest pusta i naciśnięciu przycisku OK; zwraca pusty ciąg. –