Как заново открыть мод Bootstrap, случайно закрытый - PullRequest
0 голосов
/ 04 февраля 2019

У меня есть несколько разных модалов на странице, и все это работает так, как должно, но если пользователь вводит данные в поля формы в модале, а затем случайно щелкает за пределами модального окна (который закрывает его), они теряютих изменения, так как если пользователь нажимает ту же кнопку, которую он нажал, чтобы открыть модальный режим, введенные данные будут перезаписаны данными, извлеченными из базы данных.

Так что я хотел бы иметь функцию для «открыть»«Последний закрытый модал», который просто показывает модал снова в его последнем использованном состоянии - с любыми данными, которые были в нем.

По существу, как Ctrl-Z для случайного закрытия модала.

Это действительно простоесли вы знаете идентификатор модального.Например:

$('#myModal1').modal('show'); });

Но так как у меня на странице доступно несколько разных модалов, и я не хочу иметь кучу кнопок «восстановления», мне нужно иметь возможность определять идентификаторпоследний закрытый модал.

Если не существует более простого способа, я мог бы захватывать идентификатор каждый раз, когда модал закрыт, а затем использовать этот идентификатор, если модал нужно открыть заново без изменения его данных.Примерно так:

$('#myModal1').on('hidden.bs.modal', function (e) {
  var LastModal = '#myModal1';
})

$('#myModal2').on('hidden.bs.modal', function (e) {
  var LastModal = '#myModal2';
})

function reOpen() {
$(LastModal).modal('show');
}

Но я предполагаю, что есть способ, который проще и не требует от меня указывать все свои модальные идентификаторы в JS / jQuery.Есть идеи?

1 Ответ

0 голосов
/ 04 февраля 2019

Я сделал несколько настроек, и теперь это работает хорошо для меня, по сути, без каких-либо других хлопот, кроме нескольких коротких строк кода в моем файле сценария.

var LastModal;
$('.modal').on('hidden.bs.modal', (e) => {LastModal = $(e.target).attr('id'); })
function reOpen() { $('#'+LastModal).modal('show');} 

Просто используйте стилькласс "модальный" для ваших модалов и, чтобы вызвать "reOpen", просто есть что-то вроде:

<span onclick='reOpen();'>Reopen</span>

Спасибо @marekful за ваше предложение!

Также , если вы хотите получить доступ к этой (или любой другой функции), нажав Ctrl + Z , вы можете добавить это:

// press Ctrl+Z to restore modal
$(document).keydown(function(evt){
    if (evt.keyCode==90 && (evt.ctrlKey)){
        evt.preventDefault();
        reOpen();
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...