JQuery确认对话框不会触发ASP按钮OnClick服务器端事件在用户确认后

问题描述:

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

这是我的代码。

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

对不起。 asp按钮如何工作?它是否提交表单以将数据发送到服务器?如果是这样,可以试试$(“#btnRejectAll”)。parents(“form”)。submit();在返回真实之前。 – 2011-04-15 15:57:59

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

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

在代码隐藏类:

<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 

你防止的btnRejectAll单击默认的行动,但你永远不调用的“拒绝”行动的任何行动。我对ASP.NET并不熟悉,但从您的标记看起来,您似乎取消了对btnRejectAll_OnClick的调用。如果这是一个JavaScript函数,那么你可以这样做:

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

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

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