Предотвратить Bootstrap модальные от исчезновения при щелчке за пределами или нажав клавишу Escape?
Я использую Twitter Bootstrap modal в качестве окна мастера и хотел бы запретить пользователю закрывать его при нажатии за пределами модального или при нажатии escape. Вместо этого я хочу, чтобы он был закрыт, когда пользователь нажимает кнопку Готово. Как я могу достичь этого сценария?
13 ответов:
Если вы используете JavaScript, то:
$('#myModal').modal({ backdrop: 'static', keyboard: false })а если HTML:
<a data-controls-modal="your_div_id" data-backdrop="static" data-keyboard="false" href="#">
работает,
data-backdrop="static"нажать иdata-keyboard="false"для Esc в вашем div модальном:<div id="idModal" class="modal hide" data-backdrop="static" data-keyboard="false">
просто добавить
data-backdrop="static"иdata-keyboard="false"атрибуты для этого модального.например.
<a data-controls-modal="your_div_id" data-backdrop="static" data-keyboard="false" href="#">
вы также можете использовать Direct в модели bootstrap.
<div class="modal fade" id="myModal" data-keyboard="false" data-backdrop="static">
вы можете использовать код ниже
$.fn.modal.prototype.constructor.Constructor.DEFAULTS.backdrop = 'static';чтобы изменить поведение по умолчанию.
<button class="btn btn-primary btn-lg" data-backdrop="static" data-keyboard="false" data-target="#myModal" data-toggle="modal">
Если вам нужно отключить щелчок снаружи, но включить нажатие escape
$('#myModal').modal({ backdrop: 'static', // This disable for click outside event keyboard: true // This for keyboard event })
для меня работал следующий скрипт:
// prevent event when the modal is about to hide $('#myModal').on('hide.bs.modal', function (e) { e.preventDefault(); e.stopPropagation(); return false; });
ваш код работает, когда я нажимаю на сторону модального, но если я использую html
inputполе внутри модального тела, затем сфокусируйте курсор на этом входе, затем нажмитеescклавиша модальный закрылся. Нажмите здесь
<div class="modal show"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <h4 class="modal-title">Modal title</h4> </div> <div class="modal-body"> <p>One fine body…</p> </div> </div><!-- /.modal-content --> </div><!-- /.modal-dialog -->Я думаю, что этот codepen может помочь вам предотвратить модальное закрытие css и bootstrap
Если вам нужно настроить этот после модальное, вы можете использовать решение @Набид. Однако иногда вам все равно нужно разрешить некоторые метод для закрытия модального. Если у вас есть кнопка с классом
really-close-the-modal, который должен действительно закрыть модальный, вы можете использовать этот код (jquery):var closeButtonClicked = false; $('.really-close-the-modal').on('click', function () { closeButtonClicked = true; }); $('#myModal').on('hide.bs.modal', function (e) { if (!closeButtonClicked) { e.preventDefault(); e.stopPropagation(); return false; } closeButtonClicked = false; });это не очень хороший дизайн кода, но это помогло мне в ситуации, когда модальный был показан с загрузчиком, пока не вернулся запрос ajax, и только тогда я мог знать, нужно ли настроить модальное, чтобы предотвратить "неявное" закрытие. Вы можете использовать аналогичную конструкцию, чтобы предотвратить закрытие модального во время его загрузки.
Comments