【问题标题】:JQuery confirm dialog not firing ASP Button OnClick server side event upon user's confirmation用户确认后,JQuery 确认对话框未触发 ASP 按钮 OnClick 服务器端事件
【发布时间】:2011-04-15 15:45:51
【问题描述】:

我想在 ASP 按钮 (btnRejectAll) 单击事件上显示模式确认对话框,一旦用户在模式对话框中选择“确定”,它需要引发按钮“btnRejectAll”的 OnClick 服务器端事件。以下代码显示了单击时的模态确认对话框,但是一旦我们点击 OK 按钮,它就不会触发服务器端事件。谁能帮我解决这个问题?

这是我的代码。

<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" />

【问题讨论】:

  • 对不起。 asp按钮是如何工作的?它是否提交表单以将数据发送到服务器?如果是这样,可以尝试 $("#btnRejectAll").parents("form").submit();就在返回 true 之前。

标签: jquery dialog confirm


【解决方案1】:

您阻止点击btnRejectAll 时的默认操作,但您从未对“拒绝”操作调用任何操作。我对 ASP.NET 不熟悉,但从您的标记来看,您似乎正在取消对 btnRejectAll_OnClick 的调用。如果这是一个 JavaScript 函数,那么你可以这样做:

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

如果不是(我怀疑不是),那么它可能触发了表单的提交。所以你可以这样做:

"Reject": function() {
             $(this).dialog("close");
             $('#form').submit();
             return true;
          },

【讨论】:

    【解决方案2】:

    我找到了一种在对话框确认时触发按钮服务器端事件的方法。这是代码。

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多