web-dev-qa-db-ja.com

ページ時にブートストラップモードを起動する

私はjavascriptを全く知りません。ブートストラップのドキュメントには

Javascriptを使ってモーダルを呼び出します。$( '#myModal')。modal(options)

ページの読み込み時にこれを呼び出す方法はわかりません。ブートストラップページで提供されているコードを使用して、要素クリックでモーダルを正常に呼び出すことができますが、ページをロードするとすぐにロードします。

191
Brandon

ページのロード時に呼び出したいモーダルをドキュメントのheadセクションのjQuery loadイベント内にラップするだけで、ポップアップ表示されるはずです。

_ js _

<script type="text/javascript">
    $(window).on('load',function(){
        $('#myModal').modal('show');
    });
</script>

_ html _

<div class="modal hide fade" id="myModal">
  <div class="modal-header">
    <a class="close" data-dismiss="modal">×</a>
    <h3>Modal header</h3>
  </div>
  <div class="modal-body">
    <p>One fine body…</p>
  </div>
  <div class="modal-footer">
    <a href="#" class="btn">Close</a>
    <a href="#" class="btn btn-primary">Save changes</a>
  </div>
</div>

このようにリンクを付けて呼び出すことで、ページ内でモーダルを呼び出すことができます。

<a class="btn" data-toggle="modal" href="#myModal" >Launch Modal</a>
359
Andres Ilich

モーダルを表示するのにjavascriptは必要ありません

最も簡単な方法は、 "hide"を "in"に置き換えることです。

class="modal fade hide"

そう

class="modal fade in"

ボタンを閉じるときにonclick = "$('.modal').hide()"を追加する必要があります。

シモンズ:私は最善の方法はjQueryスクリプトを追加することだと思います:

$('.modal').modal('show');
80
user2545728

以下を追加してください -

class="modal show"

作業例 -

<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>

<div class="container">
  <!-- Trigger the modal with a button -->
  <button type="button" class="btn btn-info btn-lg" data-toggle="modal" data-target="#myModal">Open Modal</button>

  <!-- Modal -->
  <div class="modal show" id="myModal" role="dialog">
    <div class="modal-dialog">
    
      <!-- Modal content-->
      <div class="modal-content">
        <div class="modal-header">
          <button type="button" class="close" data-dismiss="modal">&times;</button>
          <h4 class="modal-title">Modal Header</h4>
        </div>
        <div class="modal-body">
          <p>Some text in the modal.</p>
        </div>
        <div class="modal-footer">
          <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
        </div>
      </div>
      
    </div>
  </div>
  
</div>
39
GAURAV MAHALE

あなたはこのランナブルコードを試すことができます -

$(window).load(function()
{
    $('#myModal').modal('show');
});
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>

<div class="container">
  <!-- Trigger the modal with a button -->
  <button type="button" class="btn btn-info btn-lg" data-toggle="modal" data-target="#myModal">Open Modal</button>

  <!-- Modal -->
  <div class="modal fade" id="myModal" role="dialog">
    <div class="modal-dialog">
    
      <!-- Modal content-->
      <div class="modal-content">
        <div class="modal-header">
          <button type="button" class="close" data-dismiss="modal">&times;</button>
          <h4 class="modal-title">Modal Header</h4>
        </div>
        <div class="modal-body">
          <p>Some text in the modal.</p>
        </div>
        <div class="modal-footer">
          <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
        </div>
      </div>
      
    </div>
  </div>
  
</div>

もっと見つけることができますここ

あなたの完全な答えを持っていると思います。

17
Abrar Jahin

andre's Ilichがあなたがjqueryと呼ぶものの行の後にjsスクリプトを追加しなければならないと言うことに関して:

<script src="content/bootstrapJS/jquery-2.1.1.min.js" type="text/javascript"></script>

<script type="text/javascript">
     $(window).load(function(){
         $('#myModal').modal('show');
      });
</script>

私の場合はそれが問題でした

7
JPCS

単純にデータ属性を介してJavaScriptを記述せずにモーダルをアクティブにすることができます。

オプション "show"をtrueに設定すると、初期化時にモーダルが表示されます。

<div class="modal fade" tabindex="-1" role="dialog" data-show="true"></div>
6
obiTheOne

私の場合、モーダルを表示するためにjQueryを追加してもうまくいきませんでした。

$(document).ready(function() {
    $('#myModal').modal('show');
});

これは、モーダルが属性aria-hidden = "true"を持っていたためと思われます。

<div class="modal fade" aria-hidden="true" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">

上記のjQueryと同様に、その属性を削除する必要がありました。

<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">

モーダルクラスをmodal fadeからmodal fade inに変更してみましたが、うまくいきませんでした。また、クラスをmodal fadeからmodal showに変更すると、モーダルを閉じることができなくなりました。

5

[JavaScriptの初期化なしで]解決策があります。

Javascript $('#myModal').modal('show')を使用してモーダルを初期化する without という例が見つからなかったため、ページ読み込み時に javascript delay なしで実装する方法についての提案があります。

  1. モーダルコンテナのdivをクラスとスタイルで編集します。

<div class="modal in" id="MyModal" tabindex="-1" role="dialog" style="display: block; padding-right: 17px;">

  1. クラスとスタイルであなたの体を編集します。

    <body class="modal-open" style="padding-right:17px;">

  2. モーダル背景divを追加

    <div class="modal-backdrop in"></div>

  3. スクリプトを追加

    $(document).ready(function() {
        $('body').css('padding-right', '0px');
        $('body').removeClass('modal-open');
        $('.modal-backdrop').remove();
    
        $('#MyModal').modal('show'); });
    

    起こることはあなたのモーダルのためのhtmlが何のjavascriptなしでページロードでロードされるということです、(遅れなしで)。現時点では、モーダルを閉じることはできません。そのため、すべてが読み込まれたときにモーダルを正しく読み込むためのdocument.readyスクリプトがあります。実際にカスタムコードを削除してから、再びmodalを.modal( 'show')で初期化します。

5
Reft
<div id="ModalStart" class="modal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
    <div class="modal-body">
          <p><i class="icon-spinner icon-spin icon-4x"></i></p>
    </div>
</div>

Javascriptがなくても起動時に表示できます。クラス "hide"を削除するだけです。

class="Modal"
3
SPIELER

Bootstrap 3とjQuery(2.2と2.3)でテスト済み

$(window).on('load',function(){
  $('#myModal').modal('show');
});



<!-- Modal -->
<div class="modal fade" id="myModal" role="dialog">
    <div class="modal-dialog">

      <!-- Modal content-->
      <div class="modal-content">
        <div class="modal-header">
          <button type="button" class="close" data-dismiss="modal">&times;</button>
          <h4 class="modal-title"><i class="fa fa-exclamation-circle"></i>&nbsp; //Your modal Title</h4>
        </div>
        <div class="modal-body">
          //Your modal Content
        </div>
        <div class="modal-footer">
          <button type="button" class="btn btn-default" data-dismiss="modal">Fechar</button>
        </div>
      </div>

    </div>
</div>

https://jsfiddle.net/d7utnsbm/ /

3
Felipe Lima

ブートストラップ3では、jsを介してモーダルを初期化するだけでよく、ページをロードした瞬間にモーダルマークアップがページ内にあれば、モーダルが表示されます。

これを回避したい場合は、モーダルを初期化する場所でオプションshow: falseを使用してください。このようなもの:$('.modal').modal({ show: false })

2
Stafie Anatolie

User2545728とReftの回答に加えて、 JavaScriptなし modal-backdrop in付き

追加する3つのこと

  1. .modalクラスの前にmodal-backdrop inクラスを持つdiv
  2. style="display:block;"から.modalクラスへ
  3. fade inと.modalクラス

<div class="modal-backdrop in"></div>

<div class="modal fade in" tabindex="-1" role="dialog" aria-labelledby="channelModal" style="display:block;">

    <div class="modal-dialog modal-lg" role="document">

        <div class="modal-content">

            <div class="modal-header">

                <h4 class="modal-title" id="channelModal">Welcome!</h4>

            </div>

            <div class="modal-body" style="height:350px;">

                How did you find us?

            </div>

        </div>

    </div>

</div>
2
RafaSashi

他の人が言ったように、display:blockを使ってモーダルを作りましょう。

<div class="modal in" tabindex="-1" role="dialog" style="display:block">
...

背景をページの任意の場所に配置します。必ずしもページの下部にある必要はありません。

<div class="modal-backdrop fade show"></div> 

その後、ダイアログを再び閉じることができるようにするには、これを追加してください。

<script>
    $("button[data-dismiss=modal]").click(function () {
        $(".modal.in").removeClass("in").addClass("fade").hide();
        $(".modal-backdrop").remove();
    });
</script>

お役に立てれば

1
jBelanger

アップデート2018 - ブートストラップ4

モーダルマークアップはBootstrap 4では若干変更されています。ページロード時にモーダルを開く方法は次のとおりです。

$(window).on('load',function(){
    var delayMs = 1500; // delay in milliseconds

    setTimeout(function(){
        $('#myModal').modal('show');
    }, delayMs);
});    

<div class="modal fade" id="myModal">
      <div class="modal-dialog modal-lg modal-dialog-centered" role="document">
            <div class="modal-content">
                <div class="modal-header">
                    <h4 class="modal-title">My Modal</h4>
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                        <span aria-hidden="true">×</span>
                    </button>
                </div>
                <div class="modal-body">
                    ...
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-secondary mx-auto" data-dismiss="modal">Close</button>
                </div>
            </div>
      </div>
</div>

Codeplyのデモ

1
Zim

簡単な例ブートストラップモーダルのローダースピナーを作る

<!DOCTYPE html>
<html lang="en">
<head>
  <title>Bootstrap Example</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
  <script>
  $(document).ready(function(){
  $('#myModal').modal('show'); 
  setTimeout(function(){
  $('#myModal').modal('hide'); 
  }, 5000);
   });
  </script>
  <style>
.loader {
  border: 13px solid #f3f3f3;
  border-radius: 50%;
  border-top: 16px solid #3498db;
  width: 100px;
  height: 100px;
  -webkit-animation: spin 2s linear infinite; /* Safari */
  animation: spin 2s linear infinite;
}

/* Safari */
@-webkit-keyframes spin {
  0% { -webkit-transform: rotate(0deg); }
  100% { -webkit-transform: rotate(360deg); }
}

@keyframes spin {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}
.modal-dialog{
width: 150px;
    margin: 10% auto;
}
.modal-content{
background-color: transparent; 
   border: 0;
    border-radius: 0;
    outline: 0;
    box-shadow: none;
}
</style>
</head>
<body>

<div class="container">

  <!-- Modal -->
  <div class="modal fade" data-backdrop="static" id="myModal" role="dialog">
    <div class="modal-dialog">

      <!-- Modal content-->
      <div class="modal-content">

        <div class="modal-body">
         <div class="loader"></div>
        </div>

      </div>

    </div>
  </div>

</div>

</body>
</html>
0
ankush

あなたはより速いページロードのためにjquery.jsを延期したままにしたいかもしれません。ただし、jquery.jsが延期されている場合、$(window).loadは機能しない可能性があります。それからあなたは試すことができます

setTimeout(function(){$('#myModal').modal('show');},3000);

(jqueryを含む)ページが完全に読み込まれると、モーダルがポップアップします。

0
Viktor Ka

ページがまだ読み込まれているときにmodalを表示したい場合は、

呼び出し $("modal_selector").modal("show")inside$("document").ready()function、

および 閉じる そこに$(window).on("load")event!



なぜでしょうか。 https://stackoverflow.com/a/3698214/9438347を参照

0