Я пытаюсь использовать JQuery UI Dialog для своего рода «мягкой» проверки - если форма выглядит подозрительно, предупредите пользователя, но все равно разрешите ему продолжить отправку:
// multiple submit buttons...
var whichButton;
$("#myForm").find("[type=submit]").click(function()
{
whichButton = this;
}
var userOkWithIt = false;
$("#myForm").submit(function()
{
if (dataLooksFishy() && !userOkWithIt)
{
$("Are you sure you want to do this?").dialog(
{
buttons:
{
"Yes": function()
{
$(this).dialog("close");
// override check and resubmit form
userOkWithIt = true;
// save submit action on form
$("#myForm").append("<input type='hidden' name='" +
$(whichSubmit).attr("name") + "' value='" +
$(whichSubmit).val() + "'>");
$("#myForm").submit(); /****** Problem *********/
},
"No": function() { $(this).dialog("close"); }
}
});
return false; // always prevent form submission here
} // end data looks fishy
return true; // allow form submission
});
Я проверил это с кучей отладочных предупреждений.Поток управления именно то, что я ожидаю.Если мне сначала не удается выполнить dataLooksFishy (), мне представляется диалоговое окно, и метод возвращает асинхронно ложное значение.
Нажатие «да» вызывает этот метод повторно, и на этот раз метод возвращает значение true, однако , форма на самом деле не отправляется ...
Я уверен, что мне здесь не хватает лучшей методологии, но главная цель - смоделировать поведение синхронного подтверждения () с асинхронным диалогом ().