ダイアログを表示するために bootbox を使用しています。
bootbox.confirm
、bootbox.alert
、またはbootbox.Prompt
を使用している場合、escape
キーを押すか、ダイアログの外側をクリックすると、ダイアログは期待どおりに閉じました。
しかし、bootbox.dialog
を使用しているときに、ダイアログの外側をクリックするか、escape
キーを押すと、ダイアログが閉じません。他のダイアログのように動作させるにはどうすればよいですか?
var box = bootbox.dialog({
show: false,
backdrop: true,
animate: false,
title: 'Bla',
message: 'bla bla bla',
buttons: {
cancel: {
label: 'Cancel',
className: 'btn-warning'
},
save: {
label: 'Parse',
className: 'btn-success',
callback: function () {
// handling with ajax
return false;
}
}
}
});
box.modal('show');
これでうまくいくはずです。これはv3でのみテストされていることに注意してください。 bootstrap 2.3.2を使用
$(document).on('click', '.modal-backdrop', function (event) {
bootbox.hideAll()
});
onEscape
コールバック関数を追加します。これには、空のボディが含まれる場合があります。
ドキュメントと例 を参照してください。
基本コード:
bootbox.dialog({
onEscape: function() {},
// ...
});
正直に言うと、私はモーダルを実際に使用したことはありません-ずっと前にPRから来ましたが、そのユースケースを確信したことはありませんでした。あなたには今は良いことではありませんが、このメソッドはv3.0.0で非推奨として実際にコメントされており、おそらく将来のバージョンでは実際に削除されるでしょう-Bootboxが作成されたものや他のメソッドが微調整、改善、およびテストが行われ、多少無視されました。
しかし、あなたはこのようなことをすることができます
$(document).keyup(function(e) {
if (e.keyCode == 27) {box.modal("hide");} // esc
});
ここで他の答えを試しましたが、うまくいきませんでした。私が使用していた特定のバージョンのブートボックスまたは他の何らかの理由に関係しているかどうかはわかりませんが、私は自分のソリューションを次のようにロールバックしました:
以下を実行します。
function hideDialogOnOutsideClick(d) { // d = bootbox.dialog(...)
d[0].addEventListener('click', function(e) {
if(e.target == d[0])
$(d).modal('hide');
e.stopImmediatePropagation();
return false;
});
}
次のように使用されます:
var d = bootbox.dialog(...) // or alert, confirm etc
hideDialogOnOutsideClick(d);
バージョン3のダイアログでは、背景がtrueになるのはonEscapeがtrueの場合のみです。したがって、両方をtrueに設定する必要があります。
bootbox.dialog({message:'Message', title:'Title', backdrop:true, onEscape:true})
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" type="text/css"/>
<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.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootbox.js/4.4.0/bootbox.min.js"></script>