如何以编程方式触发Bootstrap模式?


204

如果我去这里

http://getbootstrap.com/2.3.2/javascript.html#modals

然后单击“启动演示模态”,即可完成预期的操作。我将模式用作注册过程的一部分,并且涉及服务器端验证。如果有问题,我想将用户重定向到显示我的验证消息的相同模式。目前,除了用户的物理点击之外,我无法确定如何显示模式。如何以编程方式启动模型?

Answers:


365

为了手动显示模式弹出窗口,您必须执行此操作

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

以前,您需要使用对其进行初始化,show: false以便在您手动执行之前不会显示它。

$('#myModal').modal({ show: false})

myModal模态容器的ID 在哪里。


谢谢。算了。但是,有一个观察结果是,当我打开模式框时,它将重置滚动,并且如果我从页面底部触发了模式框,则页面将被滚动到顶部。我该怎么阻止呢?
divinedragon

@tdubs:很奇怪,应该可以。查看最新的模式代码github.com/twitter/bootstrap/blob/master/js/bootstrap-modal.js。到目前为止,我知道它应该仍然有效
Claudio Redi

1
@ClaudioRedi,我在控制台中都尝试过,但我发现只有一个可以使用铬。$('#myModal')。modal({show:false})不起作用,但是$('#myModal')。modal('hide')有效。不确定为什么
泰隆·威尔逊

1
有没有办法像$('#myModel')。model({data:1,show:false})这样传递自定义值或参数作为选项
Anup Sharma

4
我知道@divinedragon会变老,但是滚动到页面顶部的问题很可能是由于触发了带有类似之类的标签的弹出窗口'<a href='#'>而导致处理程序内部return false或失败preventDefault。浏览器按照指示进行操作,并滚动到默认锚点-页面顶部。我被这个问题咬了好几次,因为我们的CSS有时依赖于href一套样式来匹配。
布里钦

54

您不应该在触发模态的元素中编写data-toggle =“ modal”(就像按钮一样),并且可以手动显示模态,方法是:

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

并隐藏:

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

我有一个使用数据切换打开模式的URL。然后,在模态内部,我有一个按钮,它调用一个函数,它最后做的就是使用您建议的hide方法关闭模态。大!
JayJay


13

的HTML

<!-- Button trigger modal -->
<button type="button" class="btn btn-primary btn-lg">
  Launch demo modal
</button>

<!-- Modal -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
        <h4 class="modal-title" id="myModalLabel">Modal title</h4>
      </div>
      <div class="modal-body">
        ...
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
        <button type="button" class="btn btn-primary">Save changes</button>
      </div>
    </div>
  </div>
</div>

JS

$('button').click(function(){
$('#myModal').modal('show');
});

演示JSFIDDLE


9

您可以通过jquery(javascript)显示模型

$('#yourModalID').modal({
  show: true
})

演示:这里

或者您可以删除“隐藏”类

<div class="modal" id="yourModalID">
  # modal content
</div>


4

我想这样做angular (2/4),这是我所做的:

<div [class.show]="visible" [class.in]="visible" class="modal fade" id="confirm-dialog-modal" role="dialog">
..
</div>`

重要注意事项

  • visible 是组件中的变量(布尔值),用于控制模式的可见性。
  • show并且in是引导程序类。

示例组件html

零件

@ViewChild('rsvpModal', { static: false }) rsvpModal: ElementRef;
..
@HostListener('document:keydown.escape', ['$event'])
  onEscapeKey(event: KeyboardEvent) {
    this.hideRsvpModal();
  }
..
  hideRsvpModal(event?: Event) {
    if (!event || (event.target as Element).classList.contains('modal')) {
      this.renderer.setStyle(this.rsvpModal.nativeElement, 'display', 'none');
      this.renderer.removeClass(this.rsvpModal.nativeElement, 'show');
      this.renderer.addClass(document.body, 'modal-open');
    }
  }
  showRsvpModal() {
    this.renderer.setStyle(this.rsvpModal.nativeElement, 'display', 'block');
    this.renderer.addClass(this.rsvpModal.nativeElement, 'show');
    this.renderer.removeClass(document.body, 'modal-open');
  }

HTML

<!--S:RSVP-->
<div class="modal fade" #rsvpModal role="dialog" aria-labelledby="niviteRsvpModalTitle" (click)="hideRsvpModal($event)">
    <div class="modal-dialog modal-dialog-centered modal-dialog-scrollable" role="document">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title" id="niviteRsvpModalTitle">

                </h5>
                <button type="button" class="close" (click)="hideRsvpModal()" aria-label="Close">
                    <span aria-hidden="true">&times;</span>
                </button>
            </div>
            <div class="modal-body">

            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-secondary bg-white text-dark"
                    (click)="hideRsvpModal()">Close</button>
            </div>
        </div>
    </div>
</div>
<!--E:RSVP-->

2

以下代码对于在openModal()函数上打开模式并在closeModal()上关闭模式很有用:

      function openModal() {
          $(document).ready(function(){
             $("#myModal").modal();
          });
      }

     function closeModal () {
          $(document).ready(function(){
             $("#myModal").modal('hide');
          });  
      }

/ * #myModal是模式弹出窗口的ID * /


1
请解释发布答案时代码的作用。
Artemis仍然不信任
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.