Bootstrap模态隐藏不起作用。 警报来自其他地方。但是我的模态没有隐藏添加了bootply。我的问题是一样的。
<button class="button primary" id="buy" data-toggle="modal" data-target=".bs-example-modal-sm" style= "text-decoration:none;" type="button">Review and confirm</button>
<div class="modal-bootstrap fade bs-example-modal-sm" id="myModal" tabindex="-1" role="dialog" aria-labelledby="smallModalLabel" aria-hidden="true">
<div class="modal-bootstrap-dialog modal-sm">
<div class="modal-bootstrap-content">
<div class="modal-bootstrap-body">
-- content ----
</div>
</div>
</div>
<div class="modal-bootstrap-footer">
<button type="submit" class="button primary" data-dismiss="modal">Close</button>
<button type="submit" class="button primary">Save changes</button>
</div>
</div>
<script type="text/javascript">
$("#buy").click(function () {
var a = 4;
if (a == 5) {
alert("if");
$('#myModal').modal('show');
}
else {
alert("else");
$('#myModal').modal('hide');
}
});
</script>
答案 0 :(得分:27)
您正在使用两种模态切换方法:通过Javascript和数据属性。因此,您的点击会触发模态显示作为您的数据属性集,并且您的Javascript不会影响此触发器。
只需删除数据属性并使用Javascript方法:
<button class="button primary" id="buy" style="text-decoration:none;" type="button">Review and confirm</button>
<div class="modal-bootstrap fade bs-example-modal-sm" id="myModal" tabindex="-1" role="dialog" aria-labelledby="smallModalLabel" aria-hidden="true">
<!-- modal contents -->
</div>
<script type="text/javascript">
$("#buy").click(function () {
var a = 4;
if (a == 5) {
alert("if");
$('#myModal').modal('show');
} else {
alert("else");
$('#myModal').modal('hide');
}
});
</script>
答案 1 :(得分:12)
我遇到了同样的问题,尝试了很多东西,但唯一对我有用的解决方案是@Tang Chanrith建议删除模态的单独部分,但稍微改进后放回滚动条。如果接受的答案对他们不起作用,我会给出答案。对不起我的英语不好。希望我帮忙。
@Tang Chanrith
尝试此功能
function hideModal() { $("#myModal").removeClass("in"); $(".modal-backdrop").remove(); $("#myModal").hide(); }
改善溶出度
您只需要从生成
的body和css中删除一个类function hideModal() {
$("#myModal").removeClass("in");
$(".modal-backdrop").remove();
$('body').removeClass('modal-open');
$('body').css('padding-right', '');
$("#myModal").hide();
}
答案 2 :(得分:9)
对于那些仍然有问题的人(嗨,Google员工!),如果您使用的是淡入淡出,则必须使用JavaScript删除淡入淡出类。
答案 3 :(得分:7)
我有同样的问题。删除fade
类。
答案 4 :(得分:6)
尝试此功能
function hideModal(){
$("#myModal").removeClass("in");
$(".modal-backdrop").remove();
$("#myModal").hide();
}
答案 5 :(得分:1)
我检查了你的代码。 现在你比较一个== 5.但是a总是4.你可能必须检查这个为什么要进行这种比较。 如果你想从javascript打开模态,你还需要删除数据目标:
<button class="button primary" id="buy" data-toggle="modal" style="text-decoration:none;" type="button">Review and confirm</button>
data-target直接打开模态。 检查这是否有效。
答案 6 :(得分:1)
尝试像这样添加return false:
$("#buy").click(function () {
var a = 4;
if (a == 5) {
alert("if");
$('#myModal').modal('show');
}
else {
alert("else");
$('#myModal').modal('hide');
}
return false;
});
答案 7 :(得分:1)
您应该尝试此$('.modal.in').modal('hide')
答案 8 :(得分:1)
我解决了这个问题。
$('#landingpage, body').on('click',function(){
$( ".action-close" ).trigger( "click" );});
答案 9 :(得分:1)
使用引导程序隐藏模式对话框
方法1:使用引导程序
$('.close').click();
$("#MyModal .close").click();
$('#myModalAlert').modal('hide');
方法2:使用停止传播
$("a.close").on("click", function(e){
$("#modal").modal("hide");
e.stopPropagation();
});
方法3:显示的方法调用后
$('#myModal').on('shown', function () {
$('#myModal').modal('hide');
})
方法4:使用CSS
this.display='block'; //Set block css
this.display='none'; //set none css after close dialog
答案 10 :(得分:0)
删除模态类“ fade”即可。
答案 11 :(得分:0)
以上解决方案均不适合我。如果是这种情况,请尝试模仿关闭按钮(动态添加的按钮)上的click事件:
cd\ Rem to return to the root folder of C
dir ????.com /b/s Rem COM files with 4 letters
pause Rem to pause the screen
dir ?I*.exe /s Rem search EXE files whose 2nd letter is I
<div class="modal" tabindex="-1" role="dialog" id="modal" area-hidden="true" style="display: inline-block;">
<div class="modal-dialog modal-dialog-centered" role="document">
...
</div>
<a href="#close-modal" rel="modal:close" class="close-modal ">Close</a></div>
</div>
应该可以解决问题。
答案 12 :(得分:0)
检查是否关闭了主模式div中的所有嵌套div
<div data-backdrop="static" class="modal fade" id="modal-progress" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle" aria-hidden="true">
-----NESTED DIV ------------------
</div>
答案 13 :(得分:0)
一个可能的原因应该是jquery和bootstrap的顺序,并且脚本的顺序不正确。 下面应该是顺序。
1. <script src='js/jquery-3.2.1.min.js'></script>
2. <script src='js/bootstrap.min.js'></script>
3. your own script:
<script type="text/javascript">
$("#buy").click(function () {
var a = 4;
if (a == 5) {
alert("if");
$('#myModal').modal('show');
}
else {
alert("else");
$('#myModal').modal('hide');
}
});
</script>
答案 14 :(得分:0)
在打开加载模式之前,请确保关闭所有其他模式。 这是用来关闭模态的函数:
function hideLoadingModal() {
$('#loadingModal').on('shown.bs.modal', function () {
$('#loadingModal').modal('hide');
});
}
现在,如果要打开模式,请调用上面的函数,然后再打开一个新函数。 像这样:
hideLoadingModal();
$('#loadingModal').modal('show');
希望这对您有所帮助。
欢呼
答案 15 :(得分:0)
我也遇到了同样的问题,无法找到正确的解决方案。
后来我观察到,当模式运行良好时,关闭它会发生什么情况。
三个主要属性是
modal-open
类已从<body>
标记中删除。<body>
标签中更改CSS
。<div>
的modal-backdrop
类。因此,当您手动执行这些操作时,您将在不起作用时实现它。
代码应在Jquery中如下
$('body').removeClass('modal-open');
$('body').css('padding-right', '');
$(".modal-backdrop").remove();
$('#myModal').hide();
因此,尝试一下并获得解决方案。
答案 16 :(得分:0)
当我使用绑定到该链接的data-toggle =“ modal”属性单击链接时,我正在打开模式弹出窗口,并尝试使用javascript将其关闭,但每次均失败,因此,当我从该链接中删除“数据切换”属性和“ href”并使用javascript打开它时,它也正使用javascript正常关闭。
从下面几行代码中,您可以轻松理解
<a href="#CustomerAdvancedModal" data-toggle="modal" class="classShowAdvancedSearch">Advanced Search</a>
我将上面的链接更改为此链接
<a href="#" class="ebiz-Advanced-Search classShowAdvancedSearch">Advanced Search</a>
之后,当我尝试使用javascript将其关闭时,我就会成功
$("#CustomerAdvancedModal").modal('hide');
答案 17 :(得分:0)
我有同样的问题。我尝试了帖子中建议的JavaScript方式,但是不幸的是,它只工作了一半时间。如果我几次触发了模态,它就会出错。结果,我创建了一个使用CSS的方法:
/* Hide the back drop*/
.modal-backdrop.show {
display: none;
}
/* Simulate the backdrop using background color */
.modal-open .modal {
background-color: rgba(47, 117, 19, 0.3);
}
答案 18 :(得分:0)
正如我遇到的,有时您需要删除显示样式:
style="display: block;"
答案 19 :(得分:0)
我有同样的问题,我的错误是我试图打开模态窗口几次。在尝试打开之前,我们必须测试模态窗口是否尚未打开。
if (!($("#MyModal").data('bs.modal') || {})._isShown){
$("#MyModal").modal('show');
}
答案 20 :(得分:0)
在java脚本代码中,您需要添加一行代码
$("#savechanges").on("click", function (e) {
$("#userModal").modal("hide");
e.stopPropagation(); //This line would take care of it
});