Могу ли я получить два последовательных диалога в JavaScript? - PullRequest
1 голос
/ 08 октября 2009

Мне нужно проверить два несвязанных условия, когда пользователь нажимает кнопку «Отправить», и запрашивать отзывы пользователей для каждого из них.

Я могу заставить один диалог jquery работать отлично, но иногда мне понадобятся два подряд, а затем завершить событие кнопки.

Вот суть: У меня есть кнопка

<asp:Button ID="btnSubmit" runat="server" Text="Submit" OnClick="btnSubmit_Click" />

, а затем какой-то Jquery, проверяющий определенное условие, что если true, появляется диалоговое окно. Если диалоговое окно открывается, я возвращаю false, чтобы исходное событие щелчка не происходило, но в большинстве случаев я хочу, чтобы оно прошло:

 $("#<%=btnSubmit.ClientID %>").click(
        function() {
           if (Condition) {
                $('#Dialog').dialog('open');
                return false;
            }
            return true;
        }
        );

Я не использую обычные кнопки диалога, но у меня есть другая кнопка asp:, которая вызывает другое событие OnClick в коде:

$("#Dialog").dialog({
            bgiframe: true,
            autoOpen: false,
            height: 90,
            width: 450,
            modal: true,
            close: function() {}
<div id="Dialog">
   <asp:Button  ID="Button1" runat="server" Text="OK" OnClick="btnDeleteSomethingThenSubmit_Click" />
    <input type="button" value="Cancel" id="btnCancelDialog" />  
</div>

Что все замечательно. Работает в любом случае. Но мне также нужно проверить другое условие, с другим диалоговым окном, но на этот раз просто флаг да / нет, и мне не нужно запускать событие на стороне сервера, так как я могу получить одно, чтобы выскочить первым, ждать ответа и установить значение, поп второй, а затем перейти к событию OnClick? Что-то вроде:

$("#<%=btnSubmit.ClientID %>").click(
        function() {
           if (OtherCondition) {
                $('#Dialog2').dialog('open');

            }
           if (Condition) {
                $('#Dialog').dialog('open');
                return false;
            }
            return true;
        }
        );

Что, очевидно, не работает.

Ответы [ 2 ]

1 голос
/ 08 октября 2009

Не могли бы вы иметь что-то вроде:

$("#<%=btnSubmit.ClientID %>").click(
  function() {
    var success = true;
     if (OtherCondition) {
       $('#Dialog2').dialog('open');
       success = false;
     }
     if (Condition) {
       $('#Dialog').dialog('open');
       success false;
     }
     return success;
    }
  );

По сути, перехватить любой диалог, возвращающий false в переменной, в противном случае вернуть true и разрешить отправку формы?

0 голосов
/ 08 октября 2009

Диалоги jQuery не блокируют и не ведут себя как родные диалоги JavaScript, поэтому вы не можете сделать

$("#<%=btnSubmit.ClientID %>").click(function() {
    if (OtherCondition) {
        $('#Dialog2').dialog('open');
    }
    if (Condition) {
        $('#Dialog').dialog('open');
        return false;
    }
    return true;
});

Вам необходимо использовать обратный вызов close , например:

$("#<%=btnSubmit.ClientID %>").click(function() {
    if (OtherCondition) {
        $('#Dialog2').dialog('open', {
            close: function() {
                if (Condition) {
                    $('#Dialog').dialog('open', {
                        // Call some function here to report the status
                        close: function() {}
                    });
                } else {
                    // Call some function here to report a different status
                }
            }
        });
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...