等待jQueryUI Popup继续

时间:2012-03-23 00:53:29

标签: jquery jquery-ui

我正在使用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"); 
});
}

2 个答案:

答案 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');
        }