如何防止JQuery的默认动作在Ajax调用结果条件



我想防止保存按钮上的默认操作,并希望在检查Ajax调用结果后保存数据。这是我的脚本

var CreateUrl = '@Url.Action("Create", "PriMkt")';
$('#btnsave').click(function (e) {
   // e.preventDefault();
    debugger;
    var Amount = $("#TrasactionAmt").val();
    var CustomerId = $("#CUSTOMER_ID").val();
    $.ajax({
        url: '@Url.Action("CheckAvlBal", "PriMkt")',
        type: "GET",
        dataType: "JSON",
        data: { Amount: Amount, CustomerId: $("#CUSTOMER_ID").val() },
        success: function (data) {
            debugger;
            if (data == 0) {
                e.preventDefault();
                bootbox.alert("You have insufficient Balance", function () {
                    window.location.href = CreateUrl;
                });
            }
            else
            {
            }
        }
    });
})

这是我的控制器动作,我也运行程序运行完美,这不是我关心的。

 public int CheckAvlBal(int CustomerId, decimal Amount)
    {

        var Acct_Desc = new System.Data.Objects.ObjectParameter("p_ACCT_DESC", typeof(string));
        var Acct_CCy = new System.Data.Objects.ObjectParameter("aCCT_CCY", typeof(string));
        var P_Branch = new System.Data.Objects.ObjectParameter("p_BRANCH", typeof(string));
        var Acc_Type = new System.Data.Objects.ObjectParameter("p_ACCT_TYPE", typeof(string));
        var Deposit_Type = new System.Data.Objects.ObjectParameter("p_DEPOSIT_TYPE", typeof(string));
        var Client_No = new System.Data.Objects.ObjectParameter("p_CLIENT_NO", typeof(int));
        var Ownership_Type = new System.Data.Objects.ObjectParameter("p_OWNERSHIP_TYPE", typeof(string));
        var Profit_Centre = new System.Data.Objects.ObjectParameter("p_PROFIT_CENTRE", typeof(string));
        var Acct_OpenDate = new System.Data.Objects.ObjectParameter("p_ACCT_OPEN_DATE", typeof(string));
        var Acct_Status = new System.Data.Objects.ObjectParameter("p_ACCT_STATUS", typeof(string));
        var Ledger_Bal = new System.Data.Objects.ObjectParameter("p_LEDGER_BAL", typeof(decimal));
        var Actual_Balance = new System.Data.Objects.ObjectParameter("p_ACTUAL_BAL", typeof(decimal));
        var Daily_Avg_Balance = new System.Data.Objects.ObjectParameter("p_AVG_DAILY_BAL", typeof(decimal));
        var Acct_Available_Balance = new System.Data.Objects.ObjectParameter("p_ACCT_AVAIL_BAL", typeof(decimal));
        var Last_Bal_Update = new System.Data.Objects.ObjectParameter("p_LAST_BAL_UPDATE", typeof(string));
       // string p_ACCT_NO = "187201016446";
        CUSTOMER customer = db.CUSTOMERs.Find(CustomerId);
        string p_ACCT_NO = customer.PKR_ACCNO;
        db.GET_ACCT_DETAILS(p_ACCT_NO, Acct_Desc, Acct_CCy, P_Branch, Acc_Type, Deposit_Type, Client_No, Ownership_Type, Profit_Centre, Acct_OpenDate, Acct_Status, Ledger_Bal, Actual_Balance, Daily_Avg_Balance, Acct_Available_Balance, Last_Bal_Update);
        var AvlAmount =Acct_Available_Balance.Value;
        if (Amount < Convert.ToDecimal(AvlAmount))
        {
            return 1;
        }
        else
        {
            return 0;
        }
    }

此处需要的逻辑是如果有效则提交/保存,而不是如果无效则阻止提交。

我假设按钮#btnsave是表单的提交按钮,所以您可以这样做:

var CreateUrl = '@Url.Action("Create", "PriMkt")';
$('#btnsave').click(function (e) {
    e.preventDefault();
    debugger;
    var Amount = $("#TrasactionAmt").val();
    var CustomerId = $("#CUSTOMER_ID").val();
    $.ajax({
        url: '@Url.Action("CheckAvlBal", "PriMkt")',
        type: "GET",
        dataType: "JSON",
        data: { Amount: Amount, CustomerId: $("#CUSTOMER_ID").val() },
        success: function (data) {
            debugger;
            if (data == 0) {
                bootbox.alert("You have insufficient Balance", function () {
                    window.location.href = CreateUrl;
                });
            } else {
                // Replace with form id
                $('#form').submit();
            }
        }
    });
})

最新更新