web-dev-qa-db-ja.com

ブートストラップモーダルオープン時に関数を呼び出す

私は以前はJQuery UIのダイアログを使用していましたが、ダイアログが開かれたときに実行するJavascriptコードを指定できるopenオプションがありました。私は持っている機能を使用してダイアログ内のテキストを選択するためにそのオプションを使用したでしょう。

今私はブートストラップのモーダルを使用してそれをやりたいです。以下はHTMlコードです。

<div id="code" class="modal hide fade">
    <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
        <h3>Modal header</h3>
    </div>
    <div class="modal-body">
        <pre>
print 'Hello World'

そしてモーダルを開くボタンに関しては:

 <a href="#code" data-toggle="modal" class="btn code-dialog">Display code</a>

ボタンのonclickリスナーを使おうとしましたが、警告メッセージが表示されました/モーダルが表示されました:

$( ".code-dialog" ).click(function(){
    alert("I want this to appear after the modal has opened!");
});
148
Mohamed Khamis

必要なものに基づいて、 表示イベント / showイベントを使用できます。

$( "#code" ).on('shown', function(){
    alert("I want this to appear after the modal has opened!");
});

デモ: プランカー

ブートストラップ3.0用の更新

Bootstrap 3.0では、表示されているイベントをまだ使用できますが、次のように使用します。

$('#code').on('shown.bs.modal', function (e) {
  // do something...
})

「イベント」の下のBootstrap 3.0のドキュメント を参照してください。

276
Arun P Johny

動作しません。代わりに$(window)を使用します

//ショーン用

$(window).on('shown.bs.modal', function() { 
    $('#code').modal('show');
    alert('shown');
});

//非表示

$(window).on('hidden.bs.modal', function() { 
    $('#code').modal('hide');
    alert('hidden');
});
70
viper_tkd

モーダルオープンの直後ではなく、モーダルオープンの直前に関数をロードするために、showの代わりにshownを使用することができます。

$('#code').on('show.bs.modal', function (e) {
  // do something...
})

ブートストラップモーダルはイベントを公開します。このようなshownイベントを聞いてください

$('#my-modal').on('shown', function(){
  // code here
});
8
Josnidhin

誰かがまだ問題を抱えている場合、(loaded.bs.modal)を使用して私にとって完璧に機能する唯一のもの:

 $('#editModal').on('loaded.bs.modal', function () {
       console.log('edit modal loaded');

       $('.datepicker').datepicker({
            dateFormat: 'yy-mm-dd',
            clearBtn: true,
            rtl: false,
            todayHighlight: true,
            toggleActive: true,
            changeYear: true,
            changeMonth: true
        });
});
1
Erose