Javascript 引导对话框。模式(';隐藏';)不';隐藏模态
我对bootbox.js modals有问题。我想使用bootbox.dialog在执行Ajax并等待响应时暂停UI。如果我使用dialog.modal('hide'),一切都会很酷inside bootbox.alert和confirm(单击OK后,它会隐藏dialog.modal),但我不想每次都确认它。当我使用dialog.modal('hide')代码>在引导框外。警告并确认它不隐藏对话框。模式。。。问题在哪里?工作代码(隐藏模式)在Javascript 引导对话框。模式(';隐藏';)不';隐藏模态,javascript,jquery,html,modal-dialog,bootbox,Javascript,Jquery,Html,Modal Dialog,Bootbox,我对bootbox.js modals有问题。我想使用bootbox.dialog在执行Ajax并等待响应时暂停UI。如果我使用dialog.modal('hide'),一切都会很酷inside bootbox.alert和confirm(单击OK后,它会隐藏dialog.modal),但我不想每次都确认它。当我使用dialog.modal('hide')在引导框外。警告并确认它不隐藏对话框。模式。。。问题在哪里?工作代码(隐藏模式)在success内,不工作代码在error var dialo
success
内,不工作代码在error
var dialog = bootbox.dialog({
message: '<p class="text-center mb-0"><i class="fa fa-spin fa-cog"></i> Please wait while we do something...</p>',
closeButton: false
});
var checkboxId = "#" + $(this).attr('id');
var checked = $(this).is(":checked");
if (checked) {
$.ajax({
url: url,
type: "POST",
data: { estimatedCostId: @Model.EstimatedCostID },
success: function (data) {
if (!data.Success)
{
bootbox.alert(data.ErrorMessage, function () {
dialog.modal('hide');
});
$(checkboxId).prop('checked', !checked);
}
},
error: function (request, status, error) {
dialog.modal('hide');
bootbox.alert("Błąd serwera");
$(checkboxId).prop('checked', !checked);
}
});
}
var dialog=bootbox.dialog({
消息:“我们正在做某事,请稍候…
”,
关闭按钮:false
});
var checkboxId=“#”+$(this.attr('id');
var checked=$(this).is(“:checked”);
如果(选中){
$.ajax({
url:url,
类型:“POST”,
数据:{estimatedCostId:@Model.estimatedCostId},
成功:功能(数据){
如果(!data.Success)
{
bootbox.alert(data.ErrorMessage,函数(){
dialog.modal('hide');
});
$(checkboxId).prop('checked',!checked);
}
},
错误:功能(请求、状态、错误){
dialog.modal('hide');
bootbox.alert(“Błd serwera”);
$(checkboxId).prop('checked',!checked);
}
});
}
这很可能是一个时间问题。如果AJAX调用“太快”,则会在bootbox.dialog函数解析之前调用成功/失败回调。那么这个,
dialog.modal('hide');
在未定义的对象上被调用。在最近的一个项目中,我遇到了一个类似的问题,通过在事件中调用AJAX解决了这个问题,如下所示:
var checkboxId=“#”+$(this.attr('id');
var checked=$(this).is(“:checked”);
var dialog=bootbox.dialog({
消息:“我们正在做某事,请稍候…
”,
关闭按钮:false
})
//这就是变化
.on('show.bs.modal',function(){
如果(选中){
$.ajax({
url:url,
类型:“POST”,
数据:{estimatedCostId:@Model.estimatedCostId},
成功:功能(数据){
如果(!data.Success)
{
bootbox.alert(data.ErrorMessage,函数(){
dialog.modal('hide');
});
$(checkboxId).prop('checked',!checked);
}
},
错误:功能(请求、状态、错误){
dialog.modal('hide');
bootbox.alert(“Błd serwera”);
$(checkboxId).prop('checked',!checked);
}
});
}
});
您也可以用一种简单的方式使用它
bootbox.hideAll() 知道为什么在`函数上的.on中未定义
checkboxId',但在其外部显示了正确的值吗?此
的上下文是错误的。将这些移动到对话框声明之前,它应该可以工作。