2014-11-05 81 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>