2014-11-05 114 views
15

我正在使用bootbox來顯示對話框。如何使用自定義對話框關閉bootbox

如果我使用bootbox.confirmbootbox.alertbootbox.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'); 
+2

可以使用onEscape:函數(){//回調} 這樣的伎倆 與選項,你給了,給這也和剛纔說的回報那 onEscape:function(){return;} done http://bootboxjs.com/documentation.html – 2015-02-25 16:40:34

回答

25

這應該這樣做。請注意,這僅在v3上進行過測試。使用引導2.3.2

$(document).on('click', '.modal-backdrop', function (event) { 
    bootbox.hideAll() 
}); 
2

說實話,我從來沒有真正使用的模式 - 從PR很長,很久以前就來了,但我從來沒有被說服了它的使用情況。現在對你不好,但實際上這個方法被評論爲在3.0.0.0版本中被棄用,並且可能在未來的版本中被刪除 - 它對我們來說並不適合(對我來說)Bootbox的創建方式,以及其他方法調整,改進和測試它坐在那裏有點被忽視。

但你可以做這樣的事情

$(document).keyup(function(e) { 
    if (e.keyCode == 27) {box.modal("hide");} // esc 
}); 
15

添加onEscape回調函數,可以有一個空的身體。

請參閱docs and example

Basic代碼:

bootbox.dialog({ 
    onEscape: function() {}, 
    // ... 
}); 
+0

它的工作原理!謝謝 。 – CyprUS 2016-06-29 20:38:38

+0

使用最新的4.x.x版本 – 2016-09-06 07:16:34

+1

'onEscape:true'就足夠了。 – 2017-10-24 06:29:06

1

在3版本,對話,背景是真實的,只有當onEscape是真正的作品,以及 - 所以你只需要同時設置爲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>