プログラムでBootstrapモーダルをトリガーするにはどうすればよいですか?


204

ここに行ったら

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

そして、「デモモーダルを起動」をクリックすると、期待どおりの動作が行われます。サインアッププロセスの一部としてモーダルを使用しており、サーバー側の検証が関係しています。問題がある場合、検証メッセージが表示されている同じモーダルにユーザーをリダイレクトしたい。現時点では、ユーザーからの物理的なクリック以外にモーダルを表示する方法を理解できません。プログラムでモデルを起動するにはどうすればよいですか?

回答:


365

モーダルポップアップを手動で表示するには、これを行う必要があります

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

以前に初期化する必要があるshow: falseため、手動で実行するまで表示されません。

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

どこmyModalモーダルコンテナのIDです。


ありがとう。うまくいきました。ただし、モーダルボックスが開いたときにスクロールがリセットされ、ページの下部からモーダルボックスをトリガーした場合、ページが上部にスクロールされることが1つの観察結果です。どうすれば止められますか?
divinedragon 2013

@tdubs:奇妙なことに、動作するはずです。最新のモーダルコードgithub.com/twitter/bootstrap/blob/master/js/bootstrap-modal.jsを参照してください。これまでのところ、私はそれがまだ機能するはずである
Claudio Redi

1
@ClaudioRedi、私はコンソールで両方を試しましたが、クロムを使用して動作するのは1つだけです。$( '#myModal')。modal({show:false})は機能しませんが、$( '#myModal')。modal( 'hide')は機能します。理由は不明
Tyrone Wilson

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');

data-toggleでモーダルを開くURLがあります。次に、モーダル内に、関数を呼び出すボタンがあります。このボタンが最後に行うのは、提案する非表示メソッドを使用してモーダルを閉じることです。すごい!
JayJay

17

あなたがプログラムによるモーダル作成を探しているなら、あなたはこれが好きかもしれません:

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

Bootstrapのモーダルはモーダル作成のためのJavaScriptの方法を提供しますが、モーダルのHTMLマークアップを最初に記述する必要があります。


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
回答を投稿するときにコードが何をするか説明してください。
アルテミスはまだSE信頼していない
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.