bootbox подтверждает изменение поведения при нажатии Enter

У меня есть всплывающее окно подтверждения загрузки для подтверждения перед действием. Каким-то образом действие является деликатным, и никакое нажатие клавиши не должно подтверждать всплывающее окно.

Успех должен быть достигнут только нажатием кнопки «ОК», также я не хочу менять поведение ESC при закрытии диалогового окна.

Было бы лучше, если бы я мог сделать это без ключевого слушателя.

Существующий загрузочный бокс:

bootbox.confirm("<center>Are you sure you want to do the operation", 
     function (result) {

                //Do something
                });

person Mihir Khadilkar    schedule 08.05.2017    source источник
comment
$('*').off('keyup keydown keypress'); попробуйте перед открытием bootbox.   -  person Manoz    schedule 08.05.2017


Ответы (1)


Использовать события загрузочного бокса -

bootbox.on("show.bs.modal") //prevent actions here

bootbox.on("hidden.bs.modal") //resume whenever its hidden.

Вы можете предотвратить все события при открытии окна, как

    var d = bootbox.confirm("msg", function(result) {
        if (result)
            callback_success();
        else
            callback_cancel();
    });

    d.on("show.bs.modal", function() {

        $('*').off('keyup keydown keypress'); // disable it on show bootbox
    });

    d.on("hidden.bs.modal", function() {

        $('*').on('keyup keydown keypress'); // call it on hidden bootbox
    });

или этого достаточно в вашем случае -

 d.on("show.bs.modal", function() {
        $(this).find('#modalButton').off('keyup keydown keypress'); // disable it on show bootbox
     });

Теперь вам не нужно событие hidden.bs.modal.

person Manoz    schedule 08.05.2017
comment
Спасибо за ваш ответ, но это также блокирует ESC от закрытия диалогового окна. Есть ли способ, при котором кнопка ввода также может закрыть диалоговое окно? - person Mihir Khadilkar; 08.05.2017
comment
@MihirKhadilkar, см. отредактированный или фрагмент выше. Вы можете настроить таргетинг на саму кнопку ОК. - person Manoz; 08.05.2017