【发布时间】:2017-12-27 17:56:12
【问题描述】:
我目前正在使用 twitter 引导程序,最近我遇到了一个问题,即关闭模式时背景没有关闭。
解决方法:
$('.modal-backdrop').hide();
这个解决方案的问题是,它会从整个页面中移除背景。当页面加载一些功能时我仍然需要它,以便用户在此过程中不会检查或取消选中某个字段。
下面的模态代码:
<div class="modal fade" id="myModal" role="dialog">
<div class="modal-dialog ">
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
<asp:HiddenField ID="hfImg" runat="server" />
</div>
<div class="modal-body" style="overflow: auto; align-content: center;">
<div class="col-sm-12">
<div id="views"></div>
</div>
</div>
<div class="modal-footer">
<div class="row">
<div class="col-sm-12">
<div class="col-sm-1 pull-left">
<button type="button" class="btn btn-primary" data-dismiss="modal";">Cancelar</button>
</div>
<div class="col-sm-1 col-sm-offset-8">
<button id="cropbutton2" class="btn btn-primary pull-right" type="button" onclick="applyCrop();">Cut</button>
</div>
<div class="col-sm-1 col-sm-offset-1">
<asp:Button runat="server" CssClass="btn btn-primary pull-right" ID="save" Text="Edit" OnClick="btnEdit_Click" />
</div>
</div>
</div>
</div>
</div>
</div>
</div>
保存按钮后面的c#:
btnEdit_Click(object sender, EventArgs e)
{
...
...
...
...
...
ScriptManager.RegisterClientScriptBlock(this.Page, this.Page.GetType(), "modal", "closeModal();", true);
}
还有用于 CloseModal() 的 javascript:
function closeModal() {
$('.modal-backdrop').hide();
$('body').removeClass('modal-open');
$('#myModal').modal('hide');
$('#<%=hfImg.ClientID%>').val("");
}
谁能帮帮我,我对这个框架没有太多经验,甚至不知道这是否以正确的方式完成。
Ps:这个页面是一个ascx
编辑: 我正在工作的这个项目很旧,我在开发它的过程中没有工作。
但现在我只是给它一点支持和维护。 原来这里存在架构问题。最初的开发人员试图通过页面始终在客户端控制结构中执行的完整回发来解决问题,从而使所有这些控件都位于更新面板中。
由于涉及的技术(Ajax 和其他东西),他们不希望它在每次用户客户端检查或取消检查某些内容或在另一个选项卡中打开子菜单时执行完整的回发。所以他们让页面看起来仍然存在,只是在更新面板上进行了少量更新。
为此目的在 Master 上定义了背景。
只会发生我的引导程序丢失对它之前引用的真实对象的引用,因为每当您更改任何内容(包括关闭模式)时页面都会得到回发。因此,当我在模态背景上执行 .hide 或 .remove 时,bootstrap 实际上是针对它可以找到的唯一参考,因此是在母版页上定义的参考。
因此,因为这将是我们无法处理的更多工作和花费更多时间,所以我们决定在模态标记上使用 data-backdrop: false 让模态没有背景。
感谢大家的帮助。
【问题讨论】:
-
$('.modal-backdrop').hide();仅在背景中添加display: none样式。可以通过调用$('.modal-backdrop').show();找回。这对你有帮助吗? -
很遗憾没有。已经尝试过点击 .show(),但 .hide 总是隐藏整个页面的背景
标签: javascript c# jquery asp.net twitter-bootstrap