Если я правильно понимаю, вы хотите «предварительно отправить» свою форму, чтобы, когда они примут, надеюсь, больше не нужно было выполнять какую-либо работу, или, в худшем случае, им просто придется подождать, пока не закончится текущий запрос.,
Я бы порекомендовал вам использовать глобальную переменную, изначально равную null, и пометить ее как true, когда они «отправят».Когда вы получаете обратный вызов от «pre-submit», проверьте состояние глобальной переменной.Если это правда, приступайте к представлению.Если это ложь, ничего не делай.Если он нулевой, это означает, что обратный вызов завершен ДО того, как они закроют диалоговое окно, что означает, что вам потребуется вторая глобальная переменная, изначально нулевая, которую вы можете установить в true в таком случае, чтобы, если вы обнаружили, что она истинна в вашем «Продолжить'действие кнопки, вы бы знали, что нужно действовать немедленно, а не ждать.
Я ожидаю, что ваш код будет выглядеть примерно так:
var ajaxPreSubmitOk = null;
var dialogSubmitOk = null;
var buttons = {
"Continue": function () {
$(this).dialog("close");
dialogSubmitOk = true;
if(ajaxPreSubmitOk !== null && ajaxPreSubmitOk) {
// Presubmit returned and everything is ok.. proceed!
callSubmit();
} else if (ajaxPreSubmitOk === null) {
// Gotta wait still
disableSubmit($("#submit-createpos"));
}
},
"Cancel": function() {
// Regardless of presubmit outcome, do nothing
dialogSubmitOk = false;
$(this).dialog("close");
}
};
function ajaxFormCallback() {
// If callback success
if(true) {
ajaxPreSubmitOk = true;
if(dialogSubmitOk !== null && dialogSubmitOk) {
// User already clicked continue. We're good!
callSubmit();
}
// else callback fail
} else {
// Regardless of outcome, do nothing
ajaxPreSubmitOk = false;
}
}
function callSubmit() {
enableSubmit($("#submit-createpos"));
ajaxPreSubmitOk = null;
dialogSubmitOk = null;
// What do do when everything goes as planned
}