【问题标题】:Bootstrap Modal close button issueBootstrap 模态关闭按钮问题
【发布时间】:2016-12-26 13:26:02
【问题描述】:

当模式打开时,我正在处理引导模式,它有两个按钮,一个用于打印模式内容,第二个用于关闭模式。

aspx 页面中的模态代码:

  <div class="modal fade" id="myModal" role="dialog">
    <div class="modal-dialog modal-lg">
      <div class="modal-content">
        <div class="modal-header">
          <button type="button" class="close" data-dismiss="modal">&times;</button>
          <h4 class="modal-title">PD checks details</h4>
        </div>
        <div id="printArea" class="modal-body">
          <asp:Repeater ID="rptPDC" runat="server">
              <HeaderTemplate>
                  <table class="table table-bordered table-condensed table-hover table-responsive table-striped"> 
                        <tr>
                            <th>IDVC</th>
                            <th>Check Number</th>
                            <th>Check Date</th>
                            <th>AMTRMITHC</th>
                        </tr>
              </HeaderTemplate>
              <ItemTemplate>
                  <tr>
                      <td><%#Eval("idvc") %> </td>
                      <td><%#Eval("checkNo") %> </td>
                      <td><%#Eval("checkDa") %> </td>
                      <td><%#Eval("art") %> </td>
                  </tr>


              </ItemTemplate>
              <FooterTemplate>

                   </table>
              </FooterTemplate>

          </asp:Repeater>
        </div>
        <div class="modal-footer">
          <button type="button" class="btn btn-default" onclick="PrintElem('printArea')">Print</button>
 <button type="button" id="closemodal"  class="btn btn-default" data-dismiss="modal">Close</button>

        </div>
      </div>
    </div>
  </div>

问题是当用户单击打印按钮时一切正常并且将打印模态内容,但是当用户单击关闭按钮以在打印内容后关闭模态时没有任何反应,模态不会关闭?

我尝试使用以下 javascript 代码来隐藏模式:

  $("#closemodal").click(function () {
            $("#myModal").modal("hide");
        });

但还是没有同样的问题?

【问题讨论】:

  • 检查开发控制台,数据关闭应该可以工作
  • 控制台没有错误,它隐藏了模态元素但使用javascript隐藏模态时背景覆盖元素仍然存在

标签: javascript jquery html css twitter-bootstrap


【解决方案1】:

您无需绑定事件以显式关闭。它内置在引导程序本身中。仔细看示例代码http://getbootstrap.com/javascript/#modals

【讨论】:

  • 是的,我知道,但在我的情况下,当我在模式或关闭按钮之外单击时,没有任何反应!?
  • 没有错误,但是它隐藏了模态但使用JavaScript代码隐藏它时背景覆盖元素仍然存在
【解决方案2】:

它与您的代码一起工作

<button type="button" class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal">
            Launch demo modal
        </button>

<div class="modal fade" id="myModal" role="dialog">
    <div class="modal-dialog modal-lg">
      <div class="modal-content">
        <div class="modal-header">
          <button type="button" class="close" data-dismiss="modal">&times;</button>
          <h4 class="modal-title">PD checks details</h4>
        </div>
        <div id="printArea" class="modal-body">
          <asp:Repeater ID="rptPDC" runat="server">
              <HeaderTemplate>
                  <table class="table table-bordered table-condensed table-hover table-responsive table-striped"> 
                        <tr>
                            <th>IDVC</th>
                            <th>Check Number</th>
                            <th>Check Date</th>
                            <th>AMTRMITHC</th>
                        </tr>
              </HeaderTemplate>
              <ItemTemplate>
                  <tr>
                      <td><%#Eval("idvc") %> </td>
                      <td><%#Eval("checkNo") %> </td>
                      <td><%#Eval("checkDa") %> </td>
                      <td><%#Eval("art") %> </td>
                  </tr>


              </ItemTemplate>
              <FooterTemplate>

                   </table>
              </FooterTemplate>

          </asp:Repeater>
        </div>
        <div class="modal-footer">
          <button type="button" class="btn btn-default" onclick="PrintElem('printArea')">Print</button>
 <button type="button" id="closemodal"  class="btn btn-default" data-dismiss="modal">Close</button>

        </div>
      </div>

https://jsfiddle.net/m1tL84gw/

【讨论】:

  • 在我这边出现打印选项对话框时,我点击取消或打印,然后我尝试点击模式上的关闭按钮,但它不起作用
【解决方案3】:

bootstrap 找到具有 data-dismiss="modal" 属性的元素并触发点击它以关闭模态对话框

<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>

【讨论】:

    【解决方案4】:

    当你点击模态关闭按钮时尝试获取一个console.log('test'),如果你得到它,那么你可以触发模态关闭按钮。例如:$("#closemodal").click(function () { console.log('MOdal CLose Layer'); setTimeout(function(){$("#myModal").modal("hide");},1000); });

    【讨论】:

      【解决方案5】:

      您甚至可以查看 Demo http://jsfiddle.net/h3WDq/ 。模式的关闭由引导程序本身处理。或者只是仔细检查您的 PrintElem('printArea') 函数代码。可能是函数内部的某些东西破坏了 modal 的关闭功能。

      更新:使用以下脚本进行打印,它将起作用:

      <script>
        function PrintElem(elem) {
        var toPrint;
        toPrint=window.open();
        toPrint.document.write(document.getElementById(elem).innerHTML);
        toPrint.print();
        toPrint.close();
        } 
      </script>
      

      【讨论】:

      • printElem 函数可能有什么问题,我刚刚检查了它:` function PrintElem(elem) { var printContents = document.getElementById(elem).innerHTML; var originalContents = document.body.innerHTML; document.body.innerHTML = 打印内容;窗口.打印(); document.body.innerHTML = originalContents; } `
      • 嗨@faresAyyad,printElem 函数有问题。问题在于“document.body.innerHTML = originalContents;”行要检查它,请在下面的脚本行中编写,您就会知道问题的原因: function PrintElem(elem) { var originalContents = $("html").html(); document.body.innerHTML = originalContents;在这里,即使将相同的 html 文本分配给正文,它也会关闭或无法点击十字图标。
      • 它不能在 IE 上仅在 chrome 中使用并且没有样式?!
      • 我尝试通过添加 window.close() 来更新 printElem 函数,但模式也没有关闭!!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-29
      • 1970-01-01
      相关资源
      最近更新 更多