Как сделать модальное подтверждение с помощью Remodal

Я использую Remodal ( https://github.com/VodkaBears/Remodal#remodal ), чтобы сделать некоторые модальные окна, обычно я использую только модальное окно предупреждения, но теперь я хочу использовать модальное окно подтверждения.

Я сделал кнопку удаления с модальным подтверждением, у меня есть следующий код:

$('#delete_button').click(function() {
    $('[data-remodal-id = modal-delete]').remodal().open();
    $(document).on('confirmation', '#modal-delete', function () {
        alert('Confirmation button is clicked');
    });
    $(document).on('cancellation', '#modal-delete', function () {
        alert('Cancel button is clicked');
    });
});

<div class="remodal" data-remodal-id="modal-delete">
    <div class="h1_modal">Delete confirmation</div> 
    <div class="p_modal">Are you sure?</div>
    <button data-remodal-action="cancel" class="remodal-cancel">Cancel</button>
    <button data-remodal-action="confirm" class="remodal-confirm">OK</button>
</div>

Модальное окно открывается, когда я нажимаю кнопку с идентификатором delete_button, но когда я выбираю «Отмена» или «ОК», я не вижу никаких предупреждений. Как я могу заставить это работать?

С уважением,

Арье


person Arie    schedule 04.08.2015    source источник
comment
Есть пара проблем, которые я вижу сразу: я не вижу элемент #delete_button в вашем HTML, и ваше делегирование событий кажется бесполезным, если только в вашем сообщении отсутствует вспомогательный код.   -  person NightOwlPrgmr    schedule 04.08.2015


Ответы (2)


Мое решение для этого:

HTML:

 <div data-remodal-id="alert">
  <a data-remodal-action="cancel" class="remodal-cancel">X</a>

  <div id="confirmation-box">
    <p>You didn't create your alert. Do you really want to close this form?</p>
    <a href="#" data-remodal-action="close" class="btn remodal-close">
      <span>Close</span>
    </a>
    <a href="#" data-remodal-action="confirm" class="btn remodal-confirm">
      <span>No</span>
    </a>
  </div>

JS:

var remodalInst = $('[data-remodal-id=alert]').remodal({
    closeOnConfirm: false
});

$(document).on('cancellation', '.remodal', function () {
    // disable other close options while modal is open
        remodalInst.settings = {
            closeOnCancel: false,
            closeOnEscape: false,
            closeOnOutsideClick: false
        }
   // show confirmation window
        $('#confirmation-box').show();
   // hide confirmation window after clicking "no" without hiding whole modal
        $(document).on('confirmation', '.remodal', function () {
            $('#confirmation-box').hide();
        });
});
person css-candies    schedule 06.08.2015

Добавьте событие клика «Отмена» и «ОК» вне события клика «Удалить»:

$('#delete_button').click(function() {
    $('[data-remodal-id = modal-delete]').remodal().open();
    // delete logic
});

$(document).on('click', '.remodal-confirm', function () {
        alert('Confirmation button is clicked');
});
$(document).on('click', '.remodal-cancel', function () {
        alert('Cancel button is clicked');
});
person Light    schedule 04.08.2015