0

In my case when I click on button confirm-box is called but at the same time server side code executes without confirmation. My code is

function btnApprovePayments() 
{  
    var ans = checkrecordofpayment(); //here returns true or false            
    if (ans == true) {
         bootbox.confirm("Are You Sure To Approve This Payment ?", function (e) {                  
              if(e)
              { return true; }
         });              
    }     
}
<asp:Button ID="btn_Approve_Payments" runat="server" Text="Approve" OnClientClick="return btnApprovePayments();" onclick="btn_Approve_Payments_Click" />
4

1 に答える 1

1

bootbox.confirm は動作が非同期であるため、その流れを止めることはできません。問題に対する振る舞いを変えなければならない

まず、e.preventdefault(); を適用して、ブートボックスのデフォルトの動作を防止する必要があります。次に、やりたいことは何でも真のセクションにロジックを追加します。次に、__doPostBack('btnDelete', 'OnClick'); を使用してサーバー側関数を呼び出します。

 $(function () {
     $(".popup_button_delete").click(function (e) {
         e.preventDefault();
         var counter = GetSelected();
         if (counter > 0) {
             bootbox.confirm(' <%=GetLocalResourceObject("DeleteConfirm") %> ', function (confirmed) {
                 if (confirmed == true) {
                     __doPostBack('btnDelete', 'OnClick');
                 }  
             });
         }
         else {
             bootbox.alert('<%=GetLocalResourceObject("NoSelectionAlert")%>'); 
         }

     });
 });
于 2014-05-07T05:41:37.847 に答える