Javascript prompt() - кнопка отмены для завершения функции
Я вызываю Javascript window.prompt()
и предлагаю пользователю отправить переменную, которую я сравниваю с другой переменной (очень простая защита паролем). Функция отлично работает, однако, если вы нажмете "cancel"
в окне prompt()
, функция не просто завершится, а скорее сравнит переменную с пустой строкой (которую пользователь решил не отправлять, нажав "отменить" ) вместо этого), в результате чего функция продолжается до части else{ }
.
Мой вопрос: как мне закончить функцию при нажатии на отмену? Мне просто нужно знать, как настроить таргетинг на кнопку отмены.
Обычно я просто вызывал .stop()
в click()
кнопки, но я не знаю, как настроить таргетинг на кнопку отмены окна подсказки.
Ответы
Ответ 1
prompt
возвращает строку, если пользователь нажимает OK
(''
без значения). Если пользователь нажал Cancel
, возвращается null
. Все, что вам нужно сделать, это проверить, имеет ли значение null
:
function doSomething() {
var input;
input = prompt('Do something?');
if (input === null) {
return; //break out of the function early
}
switch (input) {
case 'fun':
doFun();
break;
case 'boring':
beBoring();
break;
}
}
Ответ 2
Вы должны явно проверить для null
как возвращаемое значение (используя тройные равенства) и return
, когда это результат.
var result = prompt("OK?");
if (result === null) {
return;
}
Это позволяет отличить от пустой строки, что и было возвращено, когда пользователь нажимает OK
, но не вводит контент.
Ответ 3
Вы можете просто проверить
if (prompt_responce == null)
чтобы узнать, закрыто ли оно.
Ответ 4
Одна существенная проблема с обработкой результата "подсказки" заключается в том, что Safari (по крайней мере, версия 9.1.2) возвращает "вместо нуля при нажатии" Отмена". Это означает, что: if (result == null) return; не работает, и вы не можете различать запись нулевой строки и отмену.