Подождите, пока jQueryUI всплывающее окно для продолжения - PullRequest
0 голосов
/ 23 марта 2012

Я использую 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 ]

2 голосов
/ 23 марта 2012

==== ОБНОВЛЕННЫЙ ответ:

Хорошо, я признаю, что это уродливое решение, так как я знаю, что я могу остановить программу javascript: alert (), verify () и иногда $ .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();
  }
}
0 голосов
/ 23 марта 2012

Просто введите то, что вы хотите сделать (например, saveAll();) в функцию обратного вызова.

Как:

"Save": function(){
            organizedDivs[prevSel][2] = tinyMCE.activeEditor.getContent();
            setDivText();
            saveAll();
            $(this).dialog('close');
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...