pranav8265 Ответов: 1

Как дождаться всплывающего окна подтверждения bootstrapdialog, чтобы вернуть значение, прежде чем перейти к следующему шагу?


Я создал универсальную диалоговую всплывающую функцию, которая будет запрашивать у пользователей подтверждение перед выполнением функции сохранения или удаления.Но при нажатии на кнопку Сохранить страницу она не ждет ответа всплывающих окон.Вот мой код.

Что я уже пробовал:

Моя функция (возвращает true или false ):-
function DiaglogNormal(_title, _message) {
    debugger;
    
    BootstrapDialog.confirm({
        title: _title,
        message: _message,
        type: BootstrapDialog.TYPE_PRIMARY,
        closable: true, 
        draggable: true,
        btnCancelLabel: 'Cancel', 
        btnOKLabel: 'Yes',
        btnOKClass: 'btn btn-success',
        btnCancelClass: 'btn btn-warning',
        callback: function (result) {
            // result will be true if button was click, while it will be false if users close the dialog directly.
            if (result) {
                //alert('Yup.');
                return true;
            } else {
                //alert('Nope.');
                return false;
            }
        }
    })
    }


Контролируйте, где это называется :

<input type="submit" name="button" formnovalidate value="@WFCommon.BTN_Save"  id="btnSave" class="btn btn-primary" />


Функция при нажатии кнопки:

$("#btnSave").click(function () {
            debugger;           
            
            if (DiaglogNormal('Confirmation', 'Continue To Save ??...'))
                {
                    RemoveInputReviewerRules("#WorkflowDraft", 'input[alt="txtApprovers[]"]');
                }
                else
                {
                    return false;
                }
            
        });


Пожалуйста, помогите, как заставить функцию click event ждать результата вызывающей функции.

Tadit Dash (ତଡିତ୍ କୁମାର ଦାଶ)

Попробуйте вернуть false из кнопку за другой.

pranav8265

спасибо за ваш ответ .Я тоже пробовал это сделать, но прежде чем моя функция вернет true/false, событие post back будет уволено.

1 Ответов

Рейтинг:
1

Peter Leow

К сожалению, BootstrapDialog.confirm() является асинхронным, поэтому он не ждет. Ваша форма будет отправлена после нажатия кнопки Отправить. Чтобы обойти это, вы должны сначала предотвратить это поведение кнопки отправки по умолчанию, добавив:

$("#btnSave").click(function(e){
        e.preventDefault();
        // omitted
Это остановит отправку формы и позволит отобразить диалоговое окно подтверждения.
Затем вы добавите код для отправки формы, когда возврат из обратного вызова будет истинным, сделайте это:
callback: function(result) {
    if(result) {
	// whatever code you want to run 
	// to submit the form
	$("#idOfForm").submit();
     }
}
Складывая воедино всю картину:
$("#btnSave").click(function(e){
        e.preventDefault();
		
        BootstrapDialog.confirm({
            // omitted
            callback: function(result) {
                if(result) {
		     // whatever code you want to run on callback
		     // to submit the form
                     $("#idOfForm").submit();
                }
            }
        });

})


pranav8265

спасибо за вашу помощь, это сработало .Кроме того, я изменил тип кнопки как кнопка вместо отправки, и теперь она работает нормально

Peter Leow

Рад, что ваша проблема решена. Да, использование-это другой способ. Ура!