На странице просмотра:
@using (Ajax.BeginForm("UpdateAccount", "AccountInfo", new AjaxOptions {
HttpMethod = "POST",
AllowCache = false,
OnSuccess = "accountUpdateRequestSuccess",
OnFailure = "formSubmissionFailed",
OnBegin = "validateAccountInformation"
}))
Функция validateAccountInformation указана ниже:
function validateAccountInformation() {
if (error.length > 0) {
showErrorNotification(errorListHtml);
return false;
}
else {
if ( Some Conditions ) {
bootbox.confirm({
title: "Confirm",
size: "medium",
message: "Some Message",
callback: function (result) {
if (result) {
Some Code
}
else {
Some Code
}
}
});
}
}
При нажатии кнопки Сохранить сначала вызывается функция validateAccountInformation. Если ошибки нет, то появится Bootbox. Если нажать кнопку «Bootbox OK», она отправит форму с определенными значениями или, если нажать кнопку «Отмена Bootbox», она отправит форму с определенными значениями, отличными от ранее.
Теперь проблема, с которой я сталкиваюсь, заключается в , когда пользователь нажимает кнопку SAVE, он переходит к функции validateAccountInformation. И если нет ошибок, он вызывает Bootbox.Confirm. То, что я ожидал, что отправка формы будет удерживаться до тех пор, пока в Bootbox не будет нажата какая-либо кнопка OK / CANCEL. Но это не ждет Bootbox. Значение функции обратного вызова Bootbox никогда не вызывается. Это может быть связано с асинхронностью AJAX.
Я использовал javascript метод подтверждения. И этот метод удерживает отправку формы.
function validateAccountInformation() {
if (error.length > 0) {
showErrorNotification(errorListHtml);
return false;
}
else {
if ( Some Conditions ) {
if (confirm("check")) {
some code
}
}
}
}
Есть ли способ использовать окно подтверждения Bootbox с Ajax Начать форму согласно описанному выше сценарию?