如何使用javascript隐藏Bootstrap模态?

我已经阅读了这里的帖子,Bootstrap网站,并像疯了一样谷歌 - 但找不到我确定的简单答案......

我有一个Bootstrap模式,我从一个link_to助手那里打开,如下所示:

<%= link_to "New Contact", new_contact_path, {remote: true, 'data-toggle' => 'modal', 'data-target' => "#myModal",  class: "btn btn-primary"} %>

在我的操作中,我有代码创建然后传递给.在 中,我有一些错误处理代码(ruby 和 javascript 的混合)。如果一切顺利,我想关闭模态。ContactsController.createContactcreate.js.erbcreate.js.erb

这就是我遇到麻烦的地方。当一切顺利时,我似乎无法消除模态。

我已经尝试过了,这没有任何效果。我也尝试过导致模态消失但离开背景。$('#myModal').modal('hide');$('#myModal').hide();

关于如何从内部关闭模态和/或关闭背景的任何指导?create.js.erb

编辑

以下是 myModal 的标记:

<div class="modal hide" id="myModal" >
  <div class="modal-header">
    <a class="close" data-dismiss="modal">×</a>
    <h3>Add Contact</h3>
    <div id="errors_notification">
    </div>
  </div>
  <div class="modal-body">
    <%= form_for :contact, url: contacts_path, remote: true do |f| %>  
      <%= f.text_field :first_name, placeholder: "first name" %>
      <%= f.text_field :last_name, placeholder: "last name" %>
      <br>
      <%= f.submit "Save", name: 'save', class: "btn btn-primary" %>
      <a class="close btn" data-dismiss="modal">Cancel</a>
    <% end %>
  </div>
  <div class="modal-footer">
  </div>
</div>

答案 1

在浏览器窗口中打开模式后,使用浏览器的控制台尝试

$('#myModal').modal('hide');

如果它有效(并且模式关闭),那么您就知道您的关闭Javascript没有从服务器正确发送到浏览器。

如果它不起作用,那么您需要在客户端上进一步调查正在发生的事情。例如,确保没有两个具有相同ID的元素。例如,它在页面加载后第一次工作,但第二次不工作吗?

浏览器的控制台:firefox的firebug,Chrome或Safari的调试控制台等。


答案 2

要关闭引导模态,您可以将“隐藏”作为选项传递给模态方法,如下所示

$('#modal').modal('hide');

请在这里看看工作小提琴

bootstrap 还提供了可以挂接到模式功能中的事件,例如,如果要在模式对用户隐藏完毕时触发事件,则可以使用 hidden.bs.modal 事件,您可以在文档中阅读有关模式方法和事件的更多信息

如果上述方法不起作用,请为关闭按钮提供一个ID并触发单击关闭按钮。