Как проверить, открыт ли bootstrap modal, поэтому я могу использовать проверку jquery
Мне нужно сделать проверку только в том случае, если модаль открыт, потому что, если я его открываю, а затем я его закрываю, а я нажимаю кнопку, которая открывает модальность, она не работает, потому что она делает проверку jquery, но не показано, потому что модал был отклонен.
Итак, я хочу объявить jquery, если модаль открыт, поэтому я проверяю, возможно ли это?
<script>
$(document).ready(function(){
var validator =$('#form1').validate(
{
ignore: "",
rules: {
usu_login: {
required: true
},
usu_password: {
required: true
},
usu_email: {
required: true
},
usu_nombre1: {
required: true
},
usu_apellido1: {
required: true
},
usu_fecha_nac: {
required: true
},
usu_cedula: {
required: true
},
usu_telefono1: {
required: true
},
rol_id: {
required: true
},
dependencia_id: {
required: true
},
},
highlight: function(element) {
$(element).closest('.grupo').addClass('has-error');
if($(".tab-content").find("div.tab-pane.active:has(div.has-error)").length == 0)
{
$(".tab-content").find("div.tab-pane:hidden:has(div.has-error)").each(function(index, tab)
{
var id = $(tab).attr("id");
$('a[href="#' + id + '"]').tab('show');
});
}
},
unhighlight: function(element) {
$(element).closest('.grupo').removeClass('has-error');
}
});
}); // end document.ready
</script>
Ответы
Ответ 1
Чтобы избежать состояния гонки @GregPettit, вы можете использовать:
($("element").data('bs.modal') || {})._isShown // Bootstrap 4
($("element").data('bs.modal') || {}).isShown // Bootstrap <= 3
как обсуждалось в Twitter Bootstrap Modal - IsShown.
Когда модальная форма еще не открыта, .data('bs.modal')
возвращает undefined
, поэтому || {}
- это сделает isShown
значение (фальшиво) undefined
. Если вы в строгом соответствии, можете сделать ($("element").data('bs.modal') || {isShown: false}).isShown
Ответ 2
Вы можете использовать
$('#myModal').hasClass('in');
Bootstrap добавляет класс in
, когда модаль открыт и удаляет его при закрытии
Ответ 3
Вы также можете напрямую использовать jQuery.
$('#myModal').is(':visible');
Ответ 4
$("element").data('bs.modal').isShown
не будет работать, если модаль не была показана ранее. Вам нужно будет добавить дополнительное условие:
$("element").data('bs.modal')
поэтому ответ с учетом первого появления:
if ($("element").data('bs.modal') && $("element").data('bs.modal').isShown){
...
}
Ответ 5
Проверьте, открыт ли модал
$('.modal:visible').length && $('body').hasClass('modal-open')
Чтобы прикрепить прослушиватель событий
$(document).on('show.bs.modal', '.modal', function () {
// run your validation... ( or shown.bs.modal )
});
Ответ 6
Bootstrap 2,3,4 Проверьте, открыт ли какой-либо модал на странице:
if($('.modal.in').length)
совместимая версия Bootstrap 2,3,4, 4. 1+
if($('.modal.in, .modal.show').length)
Только Bootstrap 4. 1+
if($('.modal.show').length)
Ответ 7
В bootstrap-modal.js v2.2.0:
( $('element').data('modal') || {}).isShown