Es gibt null
nicht zurück, wenn der Benutzer OK drückt - es wird eine leere Zeichenfolge zurückgeben. Sie testen den Rückgabewert wahrscheinlich nicht richtig. Wenn Sie zwischen den drei verschiedenen Rückkehr Staaten testen möchten, können Sie dies wie folgt tun:
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
}
Arbeits Demo: http://jsfiddle.net/jfriend00/Kx2EK/
Ihr Kommentar zeigt, dass Sie diesen Code verwenden die testen Ergebnis:
if(!newVal || oldVal == newVal)return false;
Wenn der Benutzer das Feld löscht und drückt auf OK wird newVal ""
(eine leere Zeichenkette) sein. !newVal
wird true
sein, so dass Sie false
zurückgeben werden. Eine leere Zeichenfolge ist ein falscher Wert wie null
. Sie brauchen mehr explizit für null
wie dies zu überprüfen:
if (newVal === null || newVal === oldVal) {
// cancel button was hit
// or the same value was entered
return false;
}
Arbeiten Demo dieser Logik: http://jsfiddle.net/jfriend00/ynwBx/
Anmerkung: Ich ===
bin mit dem JavaScript-Interpreter, um zu verhindern, jede Art Casting zu tun, wie ich will nur explizit auf null
überprüfen.
'prompt' NULL nicht zurück, wenn die Eingabe leer ist und OK gedrückt wird; Es gibt die leere Zeichenfolge zurück. –