我正在构建一个简单的基于Web的文本编辑器,并尝试实现类似“保存更改?”的内容。当用户尝试打开文件并且当前文件有未保存的更改时,该对话框。
代码是这样的:
function openFile() {
if (hasChanges === true) {
$("#save-changes-dialog).dialog("open");
}
// file opening stuff goes here
}
这显然不起作用,因为会发生的事情是对话框打开,然后文件打开代码在打开对话框后立即运行,而不是等待该对话框的结果。
解决此问题的最佳方法是什么?我已经尝试动态更改按钮在“保存更改”对话框中执行的操作,以便文件打开代码由对话框按钮本身调用,但它看起来有点乱,我也因为某些问题而遇到时间问题AJAX调用。
这似乎是经常出现的事情,但我似乎无法找到关于如何解决问题的明确答案。谢谢你的帮助!
答案 0 :(得分:0)
文件打开的东西不会“在这里”。它进入对话框的按钮处理程序。
定义对话框时:
$("#save-changes-dialog").dialog({
resizable: false,
modal: true,
buttons: {
Save: function() {
// file opening stuff goes HERE instead!
},
Cancel: function() {
$(this).dialog("close");
}
}
});
答案 1 :(得分:0)
试试这个:
function checkForChanges() {
if (hasChanges === true) {
$("#save-changes-dialog").dialog("open");
return false;
}
openFile();
}
function openFile(){
// file opening stuff goes here
}
之前调用openFile的任何地方现在应该调用checkForChanges,然后在对话框中,您可以在任何希望的事件上调用openFile()