我正在使用jQueryUI进行确认弹出以保存。我正在为用户编辑完所有内容编写完成功能。弹出窗口出现,其余的完成功能在确认选择“不保存”,“保存”或“取消”之前继续。我多次使用确认,所以我不能专门为此实例更改。 如何让函数等待确认结果?
$("#dialog").dialog({
autoOpen: false,
modal: true,
title: 'Save Changes',
buttons: {
"Don't Save": function() {
setDivText();
$( this ).dialog( "close" );
},
Cancel: function(){
$("#selection option:selected").removeAttr("selected");
$.each($("#selection option"), function(){
if($(this).val() == prevSel){
$(this).attr('selected', 'selected');
}
});
$(this).dialog("close");
},
"Save": function(){
organizedDivs[prevSel][2] = tinyMCE.activeEditor.getContent();
setDivText();
$(this).dialog('close');
}
}
});
和
function output(){
if(tinyMCE.activeEditor.isDirty()){
$("#dialog").dialog('open');
saveAll();
} else {
saveAll();
}
}
和
function saveAll(){
$.each( fileText.match( /<div.*?class=".*?editable.*?".*?>[\s\S.]*?<.div>/g ), function( index, value ){
value.replace(/(id=".*?".*?>)([.\s\S]*?)(<.div>)/ ,"$1" + organizedDivs[index][2] + "$3");
});
}
答案 0 :(得分:2)
====更新回答:
好吧,我承认这是一个丑陋的解决方案,因为我所知道的'停止'javascript程序是:alert(),confirm(),有时是$ .ajax({async:false})。 :
所以我的解决方案只是通过在每个回调函数的末尾添加“saveAll()”来重新实现代码:
$("#dialog").dialog({ autoOpen: false, modal: true, title: 'Save Changes',
buttons: {
"Don't Save": function() {
setDivText();
$( this ).dialog( "close" );
saveAll(); // newly added line of code
},
"Cancle": function(){
//....
$( this ).dialog( "close" );
saveAll(); // newly added line of code
},
"Save": function(){
//....
$( this ).dialog( "close" );
saveAll(); // newly added line of code
}
// other code...
}
// and in your "finishing function"
function output(){
if(tinyMCE.activeEditor.isDirty()){
$("#dialog").dialog('open');
// this line of code : saveAll() was removed from here.
}else{
saveAll();
}
}
答案 1 :(得分:0)
只需在回调函数中输入您想要做的事情(如saveAll();
)。
像:
"Save": function(){
organizedDivs[prevSel][2] = tinyMCE.activeEditor.getContent();
setDivText();
saveAll();
$(this).dialog('close');
}