Добрый день!
В целом задача выглядит таким образом: В текстовое поле вводится значение, если пользователь жмет 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 в поле ввода?