Twitterブートストラップモーダルでエスケープキーのクローズ機能を有効にするにはどうすればよいですか?


132

メインのドキュメントページでTwitter Bootstrapモーダルの 指示に従い、上記
data-keyboard="true"構文を使用しましたが、エスケープキーを押してもモーダルウィンドウが閉じません。
他に何か不足していますか?

コード:

<a href="#my-modal" data-keyboard="true" data-toggle="modal">Open Modal</a>

<div class='modal fade hide' id='my-modal'>
  <div class='modal-body'>
    <div>Test</div>
  </div>
</div>

2
これはデフォルトで有効になっています
Adam F

回答:


301

これは、キーアップイベントのバインド方法に関する問題のようです。

tabindexこの問題を回避するために、モーダルに属性を追加できます。

tabindex="-1"

したがって、完全なコードは次のようになります。

<a href="#my-modal" data-keyboard="true" data-toggle="modal">Open Modal</a>

<div class='modal fade hide' id='my-modal' tabindex='-1'>
    <div class='modal-body'>
    <div>Test</div>
    </div>
</div>

詳細については、githubこの問題に関するディスカッションを表示できます

(新しいTWBSリポジトリへのリンクを更新)


3
ただし、これは入力フィールドからのオートフォーカスを防ぎます。
トップレス、2014

3
複数の場所からダイアログを呼び出す場合は、div.modalにdata-keyboard属性を追加することもできます(呼び出し元では省略します)。
Vitalik Verhovodov

2
あなたは厳密には必要ありませんので、エスケープとの密接は、デフォルトでtrueです-下記の@nrekポイントとしてdata-keyboard="true"-それはだtabindex="-1"、その動作を可能にします
レオ

私はこのソリューションがBootstrap 4で機能することを確認できます。ドキュメントが言うように、なぜデフォルトで機能しないのかわかりません。
Binar Web

さらに、data-keyboardコントローラーではなくモーダル要素に属します。これはに設定することでテストできますfalse
WoodrowShigeru

23

また、javascriptを介して呼び出す場合は、次のようにします。

$('#myModal').modal({keyboard: true}) 

15
これまではこれを行う必要がありましたが、今度はdivに 'tabindex = "-1"'属性があることを確認する必要もあります。
Bala Clark、

1
タブインデックスを設定するだけで済みました。
weltschmerz 2015年

@dchackeこれは、キーボードプロパティがデフォルトでtrueに設定されているためです。したがって、tabindex = '-1'を設定するだけです
nrek

12

tabindex="-1"モーダルdivに属性を追加する

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

</div>

3

角度で私はこのように使用しています:

var modalInstance = $modal.open({                        
 keyboard: false,
 backdrop: 'static',
 templateUrl: 'app/dashboard/view/currentlyIneligibleView.html',
 controller: 'currentlyIneligibleCtrl',
 resolve: {
     data: function () { return param; }
    }
});
  • 背景: 'static' =>外部をクリックすると閉じるのをやめる
  • キーボード:false =>エスケープボタンを使用して終了を停止

-1

ブートストラップ3

HTMLでは、data-backdropstaticとdata-keyboardfalseに設定するだけです

例:

<button type="button" data-toggle="modal" data-target="#myModal" data-backdrop="static" data-keyboard="false">Launch modal</button>

または

$('#myModal').modal({
  backdrop: 'static',
  keyboard: false
}) 

ライブテスト:

https://jsfiddle.net/sztx8qtz/

もっと知る:http : //budiirawan.com/prevent-bootstrap-modal-closing/


あなたの例はエスケープキーを有効にしません
Binar Web
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.