如果我点击这里

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

点击'Launch demo modal'它会完成预期的事情。我使用模式作为我的注册过程的一部分,有服务器端验证涉及。如果有问题,我想重定向到相同的模式与我的验证消息显示。目前,我不知道如何得到模式显示,而不是从用户的物理点击。如何以编程方式启动模型?


当前回答

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

其他回答

你不应该在触发模式的元素(比如按钮)中写入data-toggle="modal",你可以手动显示模式:

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

和藏在一起:

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

这是你用三元运算符做的

$('#myModal').modal( variable === 'someString' ? 'show' : 'hide');

为了手动显示弹出的模式,你必须这样做

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

你以前需要用show: false初始化它,所以它不会显示,直到你手动执行。

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

其中myModal是模态容器的id。

如果你正在寻找一个编程模式的创建,你可能会喜欢这个:

http://nakupanda.github.io/bootstrap3-dialog/

尽管Bootstrap的modal提供了一种javascript方式来创建modal,你仍然需要先编写modal的html标记。

我想用角(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-->