Ответ 1
$('#myModal').modal('hide')
должен сделать это
Мне очень нравится noob, поэтому я думаю, что я что-то наблюдаю (возможно, очевидно) с твиттер-бутстрапом. То, что я пытаюсь сделать, это получить модальный запуск только на мобильных устройствах. Это отлично работает с добавлением класса .visible-phone в модальный div. Все идет нормально. Но тогда я хочу, чтобы он работал, то есть вы можете закрыть его с помощью кнопки X. И я не могу заставить кнопку работать.
<div class="modal visible-phone" id="myModal">
<div class="modal-header">
<button class="close" data-dismiss="modal">×</button>
<h3>text introductory<br>want to navigate to...</h3>
</div>
<div class="modal-body">
<ul class="nav">
<li> ... list of links here </li>
</ul>
</div>
</div>
В нижней части html поместите jquery.js(сначала) и bootstrap.modal.js и bootstrap.transition.js. На самом деле все модули bootstrap js (не пропустите include include). Я не знаком с js..
Пожалуйста, простите меня, если я поставил действительно тупое Q. Я не мог найти ответ на эту конкретную ситуацию в журнале.
$('#myModal').modal('hide')
должен сделать это
У меня были проблемы с закрытием модального диалога bootstrap, если он был открыт с помощью
$('#myModal').modal('show');
Я решил эту проблему, открыв диалог по следующей ссылке:
<a href="#myModal" data-toggle="modal">Open my dialog</a>
Не забудьте инициализировать:
$('#myModal').modal({show: false});
Я также использовал следующие клавиши для закрытия кнопки:
data-dismiss="modal" data-target="#myModal"
Добавьте класс скрыть в модальный
<!-- Modal Demo -->
<div class="modal hide" id ="myModal" aria-hidden="true" >
Код Javascript
<!-- Use this to hide the modal necessary for loading and closing the modal-->
<script>
$(function(){
$('#closeModal').click(function(){
$('#myModal').modal('hide');
});
});
</script>
<!-- Use this to load the modal necessary for loading and closing the modal-->
<script>
$(function () {
$('#myModal').modal('show');
});
</script>
.modal('hide') вручную скрывает модальный. Используйте следующий код, чтобы закрыть модель загрузки.
$('#myModal').modal('hide');
Посмотрите на работу codepen здесь
или
Попробуйте здесь
$(function () {
$(".custom-close").on('click', function() {
$('#myModal').modal('hide');
});
});
<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.5/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet"/>
<!-- Button trigger modal -->
<button class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal">
Launch demo modal
</button>
<!-- Modal -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title" id="myModalLabel">Modal title</h4>
</div>
<div class="modal-body">
<a class="custom-close"> My Custom Close Link </a>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Save changes</button>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div><!-- /.modal -->
Попробуйте точно указать модальность, которую кнопка должна закрыть с целью передачи данных. Таким образом, ваша кнопка должна выглядеть следующим образом:
<button class="close" data-dismiss="modal" data-target="#myModal">×</button>
Кроме того, вам нужно будет только bootstrap.modal.js, чтобы вы могли безопасно удалить остальные.
Изменить: если это не сработает, удалите класс видимого телефона и протестируйте его в браузере ПК вместо телефона. Это покажет, получаете ли вы ошибки javascript или, например, проблему совместимости.
Изменить: Демо-код
<html>
<head>
<title>Test</title>
<link href="/Content/bootstrap.min.css" rel="stylesheet" type="text/css" />
<script src="/Scripts/jquery-1.7.1.min.js" type="text/javascript"></script>
<script src="/Scripts/bootstrap.modal.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function () {
if( navigator.userAgent.match(/Android/i)
|| navigator.userAgent.match(/webOS/i)
|| navigator.userAgent.match(/iPhone/i)
|| navigator.userAgent.match(/iPad/i)
|| navigator.userAgent.match(/iPod/i)
|| navigator.userAgent.match(/BlackBerry/i)
) {
$("#myModal").modal("show");
}
$("#myModalClose").click(function () {
$("#myModal").modal("hide");
});
});
</script>
</head>
<body>
<div class="modal hide" id="myModal">
<div class="modal-header">
<a class="close" id="myModalClose">×</a>
<h3>text introductory<br>want to navigate to...</h3>
</div>
<div class="modal-body">
<ul class="nav">
<li> ... list of links here </li>
</ul>
</div>
</div>
</body>
</html>
В соответствии с документом hide/toggle должен работать. Но это не так.
Вот как я это сделал
$('#modal-id').modal('toggle'); //Hide the modal dialog
$('.modal-backdrop').remove(); //Hide the backdrop
$("body").removeClass( "modal-open" ); //Put scroll back on the Body
Попробуйте это.
$('body').removeClass('modal-open');
$('.modal-backdrop').remove();
У меня была такая же проблема в iphone или на рабочем столе, не удалось закрыть диалог при нажатии кнопки закрытия.
я узнал, что тег <button>
определяет кнопку с кликом и необходим для указания атрибута type для элемента следующим образом:
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
проверьте пример кода для модальных загрузочных модалов: Страница javascript для BootStrap
Если у вас есть несколько модальных показанных одновременно, вы можете указать целевую модальную для встроенной кнопки с атрибутами data-toggle
и data-target
:
<div class="modal fade in" id="sendMessageModal" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog modal-sm">
<div class="modal-content">
<div class="modal-header text-center">
<h4 class="modal-title">Modal Title</h4>
<small>Modal Subtitle</small>
</div>
<div class="modal-body">
<p>Modal content text</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default pull-left" data-toggle="modal" data-target="#sendMessageModal">Close</button>
<button type="button" class="btn btn-danger" data-toggle="modal" data-target="#sendMessageModal">Send</button>
</div>
</div>
</div>
</div>
Где-то вне модального кода вы можете иметь другую кнопку переключения:
<a href="index.html#" class="btn btn-default btn-xs" data-toggle="modal" data-target="#sendMessageModal">Resend Message</a>
Пользователь не может нажать кнопку "В-модальный", пока эта кнопка скрыта, и она работает с опцией "modal"
для атрибута data-toggle
. Эта схема работает автоматически!
Вот фрагмент для не только закрытия модалов без обновления страницы, но при нажатии ввода он отправляет модальный текст и закрывается без обновления
У меня он настроен на моем сайте, где я могу иметь несколько модалов и некоторые модальные процессы обрабатывать данные на submit, а некоторые нет. Я создаю уникальный идентификатор для каждого модала, который обрабатывает. Например, на моей веб-странице:
HTML (модальный нижний колонтитул):
<div class="modal-footer form-footer"><br>
<span class="caption">
<button id="PreLoadOrders" class="btn btn-md green btn-right" type="button" disabled>Add to Cart <i class="fa fa-shopping-cart"></i></button>
<button id="ClrHist" class="btn btn-md red btn-right" data-dismiss="modal" data-original-title="" title="Return to Scan Order Entry" type="cancel">Cancel <i class="fa fa-close"></i></a>
</span>
</div>
Jquery:
$(document).ready(function(){
// Allow enter key to trigger preloadorders form
$(document).keypress(function(e) {
if(e.which == 13) {
e.preventDefault();
if($(".trigger").is(".ok"))
$("#PreLoadOrders").trigger("click");
else
return;
}
});
});
Как вы можете видеть, этот submit выполняет обработку, поэтому у меня есть этот jQuery для этого модального. Теперь позвольте сказать, что у меня есть другой модальный внутри этой веб-страницы, но обработка не выполняется, и поскольку один модальный открыт одновременно, я помещаю еще один $(document).ready()
в глобальный php/js script, который все страницы получают, и я даю кнопку закрытия модального закрытия класс под названием: ".modal-close"
:
HTML:
<div class="modal-footer caption">
<button type="submit" class="modal-close btn default" data-dismiss="modal" aria-hidden="true">Close</button>
</div>
jQuery (include global.inc):
$(document).ready(function(){
// Allow enter key to trigger a particular button anywhere on page
$(document).keypress(function(e) {
if(e.which == 13) {
if($(".modal").is(":visible")){
$(".modal:visible").find(".modal-close").trigger('click');
}
}
});
});