Подтвердить что ты не робот

Javascript prompt() - кнопка отмены для завершения функции

Я вызываю Javascript window.prompt() и предлагаю пользователю отправить переменную, которую я сравниваю с другой переменной (очень простая защита паролем). Функция отлично работает, однако, если вы нажмете "cancel" в окне prompt(), функция не просто завершится, а скорее сравнит переменную с пустой строкой (которую пользователь решил не отправлять, нажав "отменить" ) вместо этого), в результате чего функция продолжается до части else{ }.

Мой вопрос: как мне закончить функцию при нажатии на отмену? Мне просто нужно знать, как настроить таргетинг на кнопку отмены.

Обычно я просто вызывал .stop() в click() кнопки, но я не знаю, как настроить таргетинг на кнопку отмены окна подсказки.

4b9b3361

Ответ 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; не работает, и вы не можете различать запись нулевой строки и отмену.