Диалоговое окно подтверждения JQuery не запускает событие на стороне сервера ASP Button OnClick после подтверждения пользователя

Я хочу показать модальное диалоговое окно подтверждения на событии щелчка кнопки ASP (btnRejectAll), и как только пользователь выберет «ОК» в модальном диалоговом окне, ему необходимо вызвать событие на стороне сервера OnClick для кнопки «btnRejectAll». Следующий код показывает модальное диалоговое окно подтверждения при нажатии, но как только мы нажимаем кнопку «ОК», это не запускает событие на стороне сервера. Кто-нибудь может мне с этим помочь?

Вот мой код.

<script language="javascript" type="text/javascript">

    $(function() {


        $("#dialogReject").dialog({
            autoOpen: false,
            height: 300,
            width: 350,
            modal: true,
            buttons: {
                "Reject": function() {
                    $(this).dialog("close");
                    return true;
                },
                Cancel: function() {
                    $(this).dialog("close");
                    return false;
                }
            }
        });

        $("#btnRejectAll").click(function(event) 
        {
            event.preventDefault();

            $("#dialogReject").dialog("open"); 
        });


    });

<asp:Button ID="btnRejectAll" runat="server" Text="Reject All" OnClick="btnRejectAll_OnClick" />

person sowji250    schedule 15.04.2011    source источник
comment
Извиняюсь. как работает кнопка asp? отправляет ли он форму для отправки данных на сервер? Если да, то попробуйте $(#btnRejectAll).parents(form).submit(); непосредственно перед возвратом true.   -  person Ed Fryed    schedule 15.04.2011


Ответы (2)


Вы предотвращаете действие по умолчанию при нажатии на btnRejectAll, но вы никогда не вызываете какое-либо действие на действие «Отклонить». Я не знаком с ASP.NET, но, судя по вашей разметке, вы отменяете вызов btnRejectAll_OnClick. Если это функция JavaScript, вы можете сделать это:

"Reject": function() {
             $(this).dialog("close");
             btnRejectAll_OnClick();
             return true;
          },

Если это не так (и я подозреваю, что это не так), то, вероятно, это вызывает отправку формы. Таким образом, вы могли бы вместо этого сделать это:

"Reject": function() {
             $(this).dialog("close");
             $('#form').submit();
             return true;
          },
person no.good.at.coding    schedule 15.04.2011

Я нашел способ вызвать событие на стороне сервера кнопки при подтверждении диалога. Вот код.

function ConfirmReject(detailId) {

        var leaveId = $("#hdnLeaveReqId").val();



        $("#dialogReject").dialog({
            autoOpen: true,
            height: 300,
            width: 350,
            modal: true,
            buttons: {
                "Reject": function() {
                    $.ajax({
                        type: "POST",
                        url: "LeaveRequestForm.aspx/RejectLeave",
                        data: "{'LeaveReqId':'" + leaveId + "', 'detailId':'" + detailId
                                + "', 'rejectReason':'" + $("#txtRejectReason").val() + "'}",
                        dataType: 'json',
                        contentType: "application/json; charset=utf-8",
                        success: function(msg) { location.reload(); }
                    });

                    $(this).dialog('close');
                },
                Cancel: function() {
                    $(this).dialog("close");
                }
            }
        });

        return false;
    }

 <asp:Button ID="btnRejectAll" runat="server" Text="Reject All" 
                        OnClientClick="return ConfirmReject(0);" />

В классе CodeBehind:

<WebMethod()> _
Public Shared Function RejectLeave(ByVal LeaveReqId As Integer, ByVal detailId As Integer, ByVal rejectReason As String) As String

    'Do Something here

    Return "success"

End Function
person sowji250    schedule 18.04.2011