Показать сообщение отдельно
  #1 (permalink)  
Старый 11.03.2017, 12:53
Новичок на форуме
Отправить личное сообщение для niki Посмотреть профиль Найти все сообщения от niki
 
Регистрация: 11.03.2017
Сообщений: 3

Не открывается диалог при нажатии ESC
Добрый день!

В целом задача выглядит таким образом: В текстовое поле вводится значение, если пользователь жмет ENTER, то значение сохраняется. Если пользователь жмет ESC, то в случае, если текстовое поле оказалось пустым - мы просто ничего не делаем, если же там было какое-то значение, то необходимо спросить у пользователя, надо ли сохранить введенное значение

У меня возникла следующая проблема: Есть текстовое поле, на которое навешививается обработчик события onkeypress.

input.onkeydown = function () {
        if (event.keyCode == 13) {
            //save value
        } else if (event.keyCode == 27) {
            //input.blur();
            let dialog = createYesDoDialog("Добавить домен " + input.value + "?",
                function () {tryToSaveNewDomen(input)},
                function () {initDomens()});
            dialog.showModal();
        }
    };


Функция createYesNoDialog() инициализирует диалог.

function createYesDoDialog(msg, onYesClick, onNoClick) {
    let dialog = document.getElementById("yesNoDialog");
    document.getElementById("msgYND").innerHTML = msg;
    document.getElementById("yesBtnYND").onclick = function () {
        onYesClick();
        dialog.close();
    };
    document.getElementById("noBtnYND").onclick = function () {
        onNoClick();
        dialog.close();
    };
    dialog.onkeydown = function () {
        onNoClick();
        dialog.close();
    };
    return dialog;
}


Насколько я понимаю, проблема возникает из-за нажатия на ESC, т.е. диалог закрывается именно из-за этого нажатия. Если я сменю в условии 27 (ESC) на, например 68 (d) и если я нажму d при вводе, то диалог появится.

Как мне предотвратить закрытие диалога в ситуации, когда я нажимаю на ESC в поле ввода?
Ответить с цитированием