91

私は非常に初心者なので、twitterブートストラップモーダルで何か(おそらく明らか)を監視していると思います。私がやろうとしているのは、モバイルでのみ起動するモーダルを取得することです。これは、モーダルdivにクラス.visible-phoneを追加すると正常に機能します。ここまでは順調ですね。しかし、私はそれを機能させたいのです。つまり、Xボタンで閉じることができます。そして、ボタンを機能させることができません。

<div class="modal visible-phone" id="myModal">
  <div class="modal-header">
    <button class="close" data-dismiss="modal">×</button>
    <h3>text introductory<br>want to navigate to...</h3>
 </div>
 <div class="modal-body">
    <ul class="nav">
      <li> ... list of links here </li>
    </ul>
   </div>
  </div>

htmlの下部に、jquery.js(最初)とbootstrap.modal.jsおよびbootstrap.transition.jsを配置しました。実際には、すべてのブートストラップjsモジュール(インクルードを見逃さないでください)。私はjsの経験がありません。

本当にばかげた質問をした場合はご容赦ください。この特定の状況に対する答えがログに見つかりませんでした。

4

10 に答える 10

27

次のコマンドで開いた場合、ブートストラップモーダルダイアログを閉じるのに問題がありました。

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

次のリンクでダイアログを開くこの問題を解決しました。

<a href="#myModal" data-toggle="modal">Open my dialog</a>

初期化を忘れないでください:

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

また、閉じるボタンに次の属性を使用しました。

data-dismiss="modal" data-target="#myModal"
于 2012-05-16T17:17:15.503 に答える
13

.modal('hide')手動でモーダルを非表示にします。次のコードを使用して、ブートストラップ モデルを閉じます

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

ここで動作中のコードペンを見てください

または

ここで試してください

$(function () {
    $(".custom-close").on('click', function() {
        $('#myModal').modal('hide');
    });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet"/>

<!-- Button trigger modal -->
<button class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal">
  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-hidden="true">&times;</button>
        <h4 class="modal-title" id="myModalLabel">Modal title</h4>
      </div>
      <div class="modal-body">
        
          
          <a class="custom-close"> My Custom Close Link </a>
          
          
      </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><!-- /.modal-content -->
  </div><!-- /.modal-dialog -->
</div><!-- /.modal -->

于 2015-10-25T06:15:47.567 に答える
6

ドキュメントによると、非表示/切り替えが機能するはずです。しかし、そうではありません。

これが私がやった方法です

$('#modal-id').modal('toggle'); //Hide the modal dialog
$('.modal-backdrop').remove(); //Hide the backdrop
$("body").removeClass( "modal-open" ); //Put scroll back on the Body
于 2016-04-01T06:05:23.430 に答える
6

ボタンが閉じるモーダルを data-target で正確に指定してみてください。したがって、ボタンは次のようになります-

<button class="close" data-dismiss="modal" data-target="#myModal">×</button>

また、他のものを安全に削除できるように、bootstrap.modal.js のみが必要です。

編集: これが機能しない場合は、visible-phone クラスを削除し、電話の代わりに PC ブラウザーでテストします。これにより、javascript エラーが発生しているかどうか、またはたとえば互換性の問題であるかどうかが表示されます。

編集:デモコード

<html>
<head>
    <title>Test</title>
    <link href="/Content/bootstrap.min.css" rel="stylesheet" type="text/css" />
    <script src="/Scripts/jquery-1.7.1.min.js" type="text/javascript"></script>
    <script src="/Scripts/bootstrap.modal.js" type="text/javascript"></script>

    <script type="text/javascript">
      $(document).ready(function () {
        if( navigator.userAgent.match(/Android/i)
            || navigator.userAgent.match(/webOS/i)
            || navigator.userAgent.match(/iPhone/i)
            || navigator.userAgent.match(/iPad/i)
            || navigator.userAgent.match(/iPod/i)
            || navigator.userAgent.match(/BlackBerry/i)
          ) {
          $("#myModal").modal("show");
        }

        $("#myModalClose").click(function () {
          $("#myModal").modal("hide");
        });
      });
    </script>
</head>
<body>
    <div class="modal hide" id="myModal">
      <div class="modal-header">
        <a class="close" id="myModalClose">×</a>
        <h3>text introductory<br>want to navigate to...</h3>
     </div>
     <div class="modal-body">
        <ul class="nav">
          <li> ... list of links here </li>
        </ul>
   </div>
  </div>
</body>
</html>
于 2012-05-08T13:55:03.150 に答える
3

これを試着..

$('body').removeClass('modal-open');

$('.modal-backdrop').remove();
于 2013-06-24T07:13:53.130 に答える
0

これは、ページを更新せずにモーダルを閉じるだけでなく、Enter キーを押すとモーダルが送信され、更新せずに閉じるためのスニペットです。

複数のモーダルを設定できるサイトに設定しており、一部のモーダルは送信時にデータを処理し、一部のモーダルは処理しません。私がしているのは、処理を行うモーダルごとに一意の ID を作成することです。たとえば、私のウェブページでは:

HTML (モーダル フッター):

 <div class="modal-footer form-footer"><br>
              <span class="caption">
                <button id="PreLoadOrders" class="btn btn-md green btn-right" type="button" disabled>Add to Cart&nbsp; <i class="fa fa-shopping-cart"></i></button>     
                <button id="ClrHist" class="btn btn-md red btn-right" data-dismiss="modal" data-original-title="" title="Return to Scan Order Entry" type="cancel">Cancel&nbsp; <i class="fa fa-close"></i></a>
              </span>
      </div>

jQuery:

$(document).ready(function(){
// Allow enter key to trigger preloadorders form
    $(document).keypress(function(e) {       
      if(e.which == 13) {   
          e.preventDefault();   
                if($(".trigger").is(".ok")) 
                   $("#PreLoadOrders").trigger("click");
                else
                    return;
      }
    });
});

ご覧のとおり、この送信は処理を実行するため、このモーダルにこの jQuery を使用しています。ここで、この Web ページ内に別のモーダルがあるとしますが、処理は実行されず、一度に 1 つのモーダルが開いているため$(document).ready()、すべてのページが取得するグローバル php/js スクリプトに別のモーダルを配置し、モーダルの閉じるボタンに : というクラスを与えます".modal-close"

HTML:

<div class="modal-footer caption">
                <button type="submit" class="modal-close btn default" data-dismiss="modal" aria-hidden="true">Close</button>
            </div>

jQuery (global.inc を含む):

  $(document).ready(function(){
         // Allow enter key to trigger a particular button anywhere on page
        $(document).keypress(function(e) {
                if(e.which == 13) {
                   if($(".modal").is(":visible")){   
                        $(".modal:visible").find(".modal-close").trigger('click');
                    }
                }
         });
    });
于 2016-07-19T14:32:59.780 に答える
0

同時に表示されるモーダルが少ない場合は、モーダル内ボタンのターゲット モーダルを属性data-toggleとで指定できdata-targetます。

<div class="modal fade in" id="sendMessageModal" tabindex="-1" role="dialog" aria-hidden="true">
      <div class="modal-dialog modal-sm">
           <div class="modal-content">
                <div class="modal-header text-center">
                     <h4 class="modal-title">Modal Title</h4>
                     <small>Modal Subtitle</small>
                </div>
                <div class="modal-body">
                     <p>Modal content text</p>
                </div>
                <div class="modal-footer">
                     <button type="button" class="btn btn-default pull-left" data-toggle="modal" data-target="#sendMessageModal">Close</button>
                     <button type="button" class="btn btn-danger" data-toggle="modal" data-target="#sendMessageModal">Send</button>
                </div>
           </div>
      </div>
 </div>

モーダル コードの外側のどこかに別のトグル ボタンを配置できます。

<a href="index.html#" class="btn btn-default btn-xs" data-toggle="modal" data-target="#sendMessageModal">Resend Message</a>

これらのボタンが非表示の場合、ユーザーはインモーダル トグル ボタンをクリックできず"modal"、属性のオプションで正しく機能しますdata-toggle。このスキームは自動的に機能します。

于 2016-04-22T14:27:38.800 に答える