Замена JQuery для подтверждения Javascript - PullRequest
2 голосов
/ 07 января 2011

Допустим, я хочу предложить пользователю, прежде чем разрешить ему сохранить запись. Итак, давайте предположим, что у меня есть следующая кнопка, определенная в разметке:

<asp:Button ID="btnSave" runat="server" OnClick="btnSave_Click"></asp:Button>

Чтобы вызвать приглашение с обычным javascript, я мог бы связать событие OnClick, чтобы моя кнопка сохранения была примерно такой (я мог бы сделать это в Page_Load):

btnSave.Attributes.Add("onclick",
    "return confirm('are you sure you want to save?');");

Вызов подтверждения будет блокироваться до тех пор, пока пользователь фактически не нажмет на кнопки «Да / Нет», что мне и нужно. Если пользователь нажимает «Да», то будет вызван мой метод btnSave_OnClick.

Для диалога jquery, который является эквивалентом, я пробовал что-то вроде этого (см. Ниже). Но проблема в том, что в отличие от javascript verify (), он будет проходить через эту функцию (displayYesNoAlert), а затем перейдет к моему методу btnSave_OnClick на стороне C #. Мне нужен способ сделать его «заблокированным», пока пользователь не нажмет кнопку «Да» или «Нет», а затем вернет истину или ложь, чтобы в зависимости от ответа пользователя вызывался или не вызывался btnSave_OnClick.

В настоящее время я просто сдался и пошел с подтверждением javascript, я просто подумал, есть ли способ сделать это.

function displayYesNoAlert(msg, closeFunction) {
    dialogResult = false;

    // create the dialog if it hasn't been instantiated
    if (!$("#dialog-modal").dialog('isOpen') !== true) {

        // add a div to the DOM that will store our message
        $("<div id=\"dialog-modal\" style='text-align: left;' title='Alert!'>").appendTo("body");

        $("#dialog-modal").html(msg).dialog({
            resizable: true,
            modal: true,
            position: [300, 200],
            buttons: {
                'Yes': function () {
                    dialogResult = true;
                    $(this).dialog("close");
                },
                'No': function () {
                    dialogResult = false;
                    $(this).dialog("close");
                }
            },
            close: function () {
                if (closeFunction !== undefined) {
                    closeFunction();
                }
            }
        });
    }
    $("#dialog-modal").html(msg).dialog('open');

}

Ответы [ 3 ]

2 голосов
/ 07 января 2011

Это может быть так же просто, как использовать вашу текущую кнопку «Сохранить», чтобы закрыть диалоговое окно подтверждения, тогда внутри диалогового окна «Подтверждение» кнопка «да» запускает событие «btnSave_Click»

Я думаю, что ясначала неправильно понял вопрос ... это может вам помочь, хотя я его не проверял.http://tutorialzine.com/2010/12/better-confirm-box-jquery-css3/

2 голосов
/ 07 января 2011

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

0 голосов
/ 02 февраля 2012

Если перед переходом к окончательному коду, как для SAVE, вам нужен только один последний блок подтверждения, то определенно это поможет вызвать функцию SAVE () в функции обратного вызова для нажатия кнопки.Это нормально.

У меня есть еще одна проблема: я хочу использовать это настраиваемое поле подтверждения в проверке формы, где может быть несколько случаев и сценариев подтверждения один за другим.

Если пользователь сказал «ДА» для первого поля подтверждения, мы хотим представить второе поле подтверждения на основе условий данных формы.

Если пользователь снова скажет «ДА» этому второму полю подтверждения, нам может понадобитьсяпредставить следующее окно подтверждения.Вот проблема, которая еще не возможна в этих случаях.

...