Ответ 1
Поместите modal('toggle')
вместо modal(toggle)
$(function () {
$('#modal').modal('toggle');
});
У меня есть модальное диалоговое окно bootstrap, которое я хочу показать сначала, а затем, когда пользователь нажимает на страницу, он исчезает. У меня есть следующее:
$(function () {
$('#modal').modal(toggle)
});
<div class="modal" id='modal'>
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h3 id="myModalLabel">Error:</h3>
</div>
<div class="modal-body">
<p>Please correct the following errors:</p>
</div>
</div>
</div>
Модаль сначала отображается, но не закрывается при нажатии на него вне модальности. Кроме того, область содержимого не выделена серым цветом. Как я могу сначала отобразить модальный дисплей, а затем закрыть после того, как пользователь нажимает за пределами области? И как я могу заставить фон быть серым, как в демо?
Поместите modal('toggle')
вместо modal(toggle)
$(function () {
$('#modal').modal('toggle');
});
чтобы закрыть bootstrap modal, вы можете передать 'hide' как вариант модального метода, как следует
$('#modal').modal('hide');
Пожалуйста, взгляните на рабочую скрипку здесь
bootstrap также предоставляет события, которые вы можете подключить к функциям modal, например, если вы хотите запустить событие, когда модальность закончила скрываться от пользователя, которого вы может использовать событие hidden.bs.modal, которое вы можете прочитать больше о модальных методах и событиях здесь в Документация
Если ни один из вышеперечисленных методов не работает, введите идентификатор вашей кнопки закрытия и нажмите кнопку "Закрыть".
$('#modal').modal('toggle');
или
$('#modal').modal().hide();
должен работать.
Но если ничего не работает, вы можете напрямую вызвать кнопку закрытия модального кода:
$("#modal .close").click()
это сработало для меня:
<span class="button" data-dismiss="modal" aria-label="Close">cancel</span>
используйте эту ссылку модальный закрыть
$("#your-modal-id").modal('hide');
Запуск этого вызова через класс ($(".my-modal"))
не будет работать.
этот файл довольно хорош, и он также работает в angular 2
$("#modal .close").click()
Мои пять центов в этом случае - это то, что я не хочу, чтобы нужно было нацеливать bootstrap modal на id и видеть, что должен быть только один модальный за один раз следующее должно быть достаточно, чтобы удалить модальный как переключатель может быть опасным:
$('.modal').removeClass('show');
В некоторых случаях ошибкой ввода может быть преступник. Например, убедитесь, что у вас есть:
data-dismiss="modal"
а не
data-dissmiss="modal"
Обратите внимание на двойной "ss" во втором примере, который приведет к сбою кнопки "Закрыть".
Попробуй это
$('#modal_id').modal('hide');
<!DOCTYPE html>
<html lang="en">
<head>
<title>Bootstrap Example</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script>
$(window).load(function(){
$('#myModal').modal('show');
});
$(function () {
$('#modal').modal('toggle');
});
</script>
</head>
<body>
<div class="container">
<h2>Modal Example</h2>
<!-- Trigger the modal with a button -->
<button type="button" class="btn btn-info btn-lg" data-toggle="modal" data-target="#myModal">Open Modal</button>
<!-- Modal -->
<div class="modal fade" id="myModal" role="dialog">
<div class="modal-dialog">
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h4 class="modal-title">Modal Header</h4>
</div>
<div class="modal-body">
<p>Some text in the modal.</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
Мы можем закрыть модальное всплывающее окно следующими способами:
// We use data-dismiss property of modal-up in html to close the modal-up,such as
<div class='modal-footer'><button type='button' class="btn btn-default" data-dismiss='modal'>Close</button></div>
// We can close the modal pop-up through java script, such as
<div class='modal fade pageModal' id='openModal' tabindex='-1' data-keyboard='false' data-backdrop='static'>
$('#openModal').modal('hide'); //Using modal pop-up Id.
$('.pageModal').modal('hide'); //Using class that is defined in modal html.
$('.modal.in').modal('hide');
используйте приведенный выше код, чтобы скрыть фон модальности, если вы используете несколько модальных всплывающих окон на одной странице.
function Delete(){
var id = $("#dgetid").val();
debugger
$.ajax({
type: "POST",
url: "Add_NewProduct.aspx/DeleteData",
data: "{id:'" + id + "'}",
datatype: "json",
contentType: "application/json; charset=utf-8",
success: function (result) {
if (result.d == 1) {
bindData();
setTimeout(function(){ $('#DeleteModal').modal('hide');},1000);
}
}
});
};
ты можешь использовать;
$('#' + $('.modal.show').attr('id')).modal('hide');
Использование modal.hide только скроет модальный. Если вы используете оверлей под модальным, он все равно будет там. используйте щелчок, чтобы фактически закрыть модальный и удалить наложение.
$("#modalID .close").click()
Другой способ сделать это - сначала удалить класс modal-open, который закрывает модальный. Затем вы удаляете класс модальный фон, который удаляет сероватую обложку модального.
Можно использовать следующий код:
$('body').removeClass('modal-open')
$('.modal-backdrop').remove()
Я закрыл модально программно с помощью этого трюка
Добавьте кнопку в модал с data-dismiss="modal"
и скройте кнопку с display: none
. Вот как это будет выглядеть
<div class="modal fade" id="addNewPaymentMethod" role="dialog">
<div class="modal-dialog">
.
.
.
<button type="button" id="close-modal" data-dismiss="modal" style="display: none">Close</button>
</div>
</div>
Теперь, когда вы хотите закрыть модально программно, просто вызовите событие нажатия на эту кнопку, которое не видно пользователю
В Javascript вы можете вызвать нажатие на эту кнопку следующим образом:
document.getElementById('close-modal').click();
Этот код отлично работал для меня, чтобы закрыть модальный (я использую bootstrap 3.3)
$('#myModal').removeClass('in')
В моем случае главная страница, с которой был запущен мод начальной загрузки, перестала отвечать после использования $("#modal").modal('toggle');
Кстати, но начал отвечать следующим образом:
$("#submitBtn").on("click",function(){
$("#submitBtn").attr("data-dismiss","modal");
});
Это хорошо работает
$(function () {
$('#modal').modal('toggle');
});
Тем не менее, когда у вас есть несколько модов, накладывающихся друг на друга, это не эффективно, поэтому вместо этого это работает
data-dismiss="modal"
Кроме того, вы можете "click" на "x", который закрывает диалог. Например:.
$(".ui-dialog-titlebar-close").click();
В моем случае я использовал кнопку, чтобы показать модальный
<button type="button" class="btn btn-success" style="color:white"
data-toggle="modal" data-target="#my-modal-to-show" >
<i class="fas fa-plus"></i> Call MODAL
</button>
Таким образом, в моем коде, чтобы закрыть модальный (который имеет id = 'my-modal-to-show'), я вызываю эту функцию (в машинописном наборе Angular):
closeById(modalId: string) {
$(modalId).modal('toggle');
$(modalId+ ' .close').click();
}
Если я вызываю $ (modalId).modal('hide'), это не работает, и я не знаю, почему
PS: в моём модале я тоже кодировал этот элемент кнопки с классом .close
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
В некоторых случаях решение не работает, поэтому вам нужно правильно удалить класс in и добавить отображение css: нет вручную.
$("#modal").removeClass("in");
$("#modal").css("display","none");