JavaScript Bootstrap模态框 - 取消关闭

31

我的工作使用的是JavaScript Bootstrap 2.0.4

我正在寻找一种逻辑控制方式来取消模态框的关闭,但我无法找到如何实现的详细信息。

http://getbootstrap.com/javascript/#modals

类似于.NET。

OnWindowClosing(eventArguement) 
{ 
    if (shouldCancel) {
      eventArguement.Cancel = true; 
      return;
    }
}

你在寻找这个问题吗?https://dev59.com/dmkw5IYBdhLWcg3wbqES - BENARD Patrick
1
尝试在你的OnWindowClosing函数中返回false。 - Girish Vadhel
@Jahnux73。不,这篇帖子似乎想要禁用关闭,而我仍然允许关闭,但在特定情况下,我希望中止关闭。 - Kelmen
3个回答

58

看这里:www.bootply.com/QTTDf3zRgV

在这个例子中,如果复选框被勾选,则模态框无法关闭(使用js/jquery):

$('#myModal').on('hide.bs.modal', function(e){
  if( $('#block').is(':checked') ) {
     e.preventDefault();
     e.stopImmediatePropagation();
     return false; 
   }
});

正如@Affilnost在下面所说的那样,e.cancel()未定义,请使用e.stopImmediatePropagation() - barsh
1
同样可以很好地与Bootstrap 3配合使用。 - dangowans

5

e.cancel并没有定义,因此会出现错误-这就是为什么上面的解决方案有效的原因。

您需要添加e.stopImmediatePropagation();

以下是演示:http://www.bootply.com/o5jsyItQMm


4

你提供的解决方案不起作用,所以我找到了这个,它是完美的解决方案。 请参考这里https://github.com/twbs/bootstrap/issues/1202#issuecomment-48601320

$('#myModal').on('hide.bs.modal.prevent', closeModalEvent);
/**
* allow popup to hide or not
* @param {type} e
* @returns {Boolean}
 */
function closeModalEvent(e) {
    e.preventDefault();
    if ($('#block').is(':checked')) {
        $('#myModal').off('hide.bs.modal.prevent');
        $("#myModal").modal('hide');
        return true;
    }
    return false;
}

我正在使用 Bootstrap v4-alpha.6,并绑定到 hide.bs.modal.prevent 事件,就像你在 github issue 中提到的那样。这确实可以防止模态框关闭,但是当用户第二次尝试点击模态框外部时,它会在控制台记录一个错误:bootstrap.min.js Uncaught Error: Modal is transitioning - Blaskovicz
问题仍然存在吗? - Himanshu Singh
有人能告诉我事件名称中的“...prevent”结构是什么吗?(我知道命名空间是什么,但找不到关于防止命名空间的任何信息) - diesel94

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接