Как проверить, открыт ли Bootstrap modal, поэтому я могу использовать jQuery validate
Мне нужно сделать проверку только в том случае, если модальный открыт, потому что если я открою его, а затем закрою его, и я нажимаю кнопку, которая открывает модальный, он не работает, потому что он делает проверку 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>
6 ответов:
чтобы избежать состояния гонки @GregPettit упоминает, можно использовать:
($("element").data('bs.modal') || {})._isShown // Bootstrap 4 ($("element").data('bs.modal') || {}).isShown // Bootstrap <= 3
как говорится в Twitter Bootstrap Modal-IsShown.
когда модальный еще не открыт,
.data('bs.modal')
возвращаетundefined
, отсюда|| {}
- который сделаетisShown
значение (falsy)undefined
. Если вы в строгости можно было бы сделать($("element").data('bs.modal') || {isShown: false}).isShown
можно использовать
$('#myModal').hasClass('in');
Bootstrap добавляет
in
класс, когда модальный открыт и удаляет его при закрытии