选择答案前返回对话框
Dialog returning before selecting answer
我有一个弹出的对话框,询问用户一个问题,这是在下面的函数中:
function confirmBox2(action) {
var message = "";
if (action == "Quit") {
message = "Are you sure you want to quit without saving?";
}
else if (action == "Delete") {
message = "Confirm you want to Delete?";
}
else if (action == "Save") {
message = "Are you sure you want to Save Changes?";
}
$('body').append('<div id="dialog-box" style="display:none;">' + message + '</div>');
$('#dialog-box').dialog({
modal: true,
buttons: {
Yes: function () {
$(this).dialog("close");
$('#dialog-box').remove();
return true;
//history.back(-1);
},
NO: function () {
$(this).dialog("close");
$('#dialog-box').remove();
return false;
}
}
});
}
您将看到"是"返回true,"否"返回false。我想做一些类似的事情
if(confirmBox2("Quit")){
// do something here
}
我遇到的问题是,代码是异步运行的,而不是等待对话框答案被选择,我该如何解决这个问题?
感谢
我修改了确认函数以接受另外两个参数。其中一个是当您单击"是"时要调用的函数的名称,另一个是单击"否"时要呼叫的函数的姓名。您以前的版本是打开对话框,然后立即结束函数,因为对话框调用不是阻塞或同步调用,所以函数没有等到您关闭对话框才返回。这就是为什么你没有得到结果。使用此方法,您可以创建一个处理"是"单击的函数,一个处理"否"单击的函数并在单击相应按钮时调用它们。
function confirmBox2(Action, YesCallback, NoCallback) {
var message = "";
if (Action == "Quit") {
message = "Are you sure you want to quit without saving?";
} else if (Action == "Delete") {
message = "Confirm you want to Delete?";
} else if (Action == "Save") {
message = "Are you sure you want to Save Changes?";
}
$('body').append('<div id="dialog-box" style="display:none;">' + message + '</div>');
$('#dialog-box').dialog({
modal: true,
buttons: {
"Yes" : function () {
$(this).dialog("close");
$('#dialog-box').remove();
YesCallback();
},
"No" : function () {
$(this).dialog("close");
$('#dialog-box').remove();
NoCallback();
}
}
});
}
function onDialogYes() {
// handle the "yes" click here
}
function onDialogNo() {
// handle the "no" click here
}
confirmBox2("Quit", onDialogYes, onDialogNo);
您也可以在不将回调函数作为参数传递的情况下执行此操作,如下所示。。。
function confirmBox2(Action) {
var message = "";
if (Action == "Quit") {
message = "Are you sure you want to quit without saving?";
} else if (Action == "Delete") {
message = "Confirm you want to Delete?";
} else if (Action == "Save") {
message = "Are you sure you want to Save Changes?";
}
$('body').append('<div id="dialog-box" style="display:none;">' + message + '</div>');
$('#dialog-box').dialog({
modal: true,
buttons: {
"Yes" : function () {
$(this).dialog("close");
$('#dialog-box').remove();
onDialogYes();
},
"No" : function () {
$(this).dialog("close");
$('#dialog-box').remove();
onDialogNo();
}
}
});
}
function onDialogYes() {
// handle the "yes" click here
}
function onDialogNo() {
// handle the "no" click here
}
confirmBox2("Quit");
您可能希望将Action
传递到按钮的事件处理程序中,这样您就知道要处理什么操作。
相关文章:
- 是否可以将JXBrowser显示的JS确认对话框的结果返回到调用它的JS部分
- 使用jquery对话框时,单击按钮时始终返回true
- 在 jQuery 对话框中以分部视图提交表单后返回数据
- 如何在自定义模式对话框中加载通过 AJAX 调用返回的 JSON 数据
- Jquery 对话框内容有时会返回旧数据
- 关闭模式对话框时,从模式对话框返回时间
- 如果 PHP 返回 0,则运行 jQuery 模式对话框
- 从服务器调用确认对话框 ASP.NET.并返回服务器上的选择
- 带有布尔返回值的 jQuery UI 对话框 - 真或假
- 如何从IE和Chrome浏览器中的显示模式对话框窗口返回数组对象
- 确认对话框立即返回 false
- 打开对话框,其中包含在使用 magnificPopup 构建的弹出窗口中跟随 URL 返回的结果
- 打开/返回位置权限对话框
- 手柄”;返回“;在MobileSafari javascript prompt()对话框中键入
- 在asp.net中,带有引导程序的对话框模式中的Gridview onclick-in会将值返回到模式父页Web表单
- 从jquery模型确认或模型对话框返回值
- 当确认对话框返回false时保持行可见
- 模态对话框返回值未定义-将结果发送到父窗口
- 等待jquery对话框返回
- 如何从jquery对话框返回消息为true