Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用回调恢复默认行为_Javascript_Jquery_Ajax_Asp.net Mvc - Fatal编程技术网

Javascript 使用回调恢复默认行为

Javascript 使用回调恢复默认行为,javascript,jquery,ajax,asp.net-mvc,Javascript,Jquery,Ajax,Asp.net Mvc,在表单提交之前,需要使用Javascript进行一些检查。这些检查将验证是否在继续之前捕获了该特定部分的所有适用数据(如果按钮选择为“是”,并且没有提交索赔,以及客户是否提交了重复的索赔) 检查重复声明的部分返回一个从Ajax函数返回的数据数组。如果有相关数据,必须阻止表单继续,并显示一个弹出窗口-这正在工作。我遇到的问题是,当没有数据(count=0)时,我需要触发一个按钮,表单必须继续(调用MVC的Post方法)。但是,表单没有继续执行Post事件(恢复默认行为) 这就是我所做的:

在表单提交之前,需要使用Javascript进行一些检查。这些检查将验证是否在继续之前捕获了该特定部分的所有适用数据(如果按钮选择为“是”,并且没有提交索赔,以及客户是否提交了重复的索赔)

检查重复声明的部分返回一个从Ajax函数返回的数据数组。如果有相关数据,必须阻止表单继续,并显示一个弹出窗口-这正在工作。我遇到的问题是,当没有数据(count=0)时,我需要触发一个按钮,表单必须继续(调用MVC的Post方法)。但是,表单没有继续执行Post事件(恢复默认行为)

这就是我所做的:

    $("#btnNext").on("click", function (e) {
    isNextClick = true;
    if ($("input[name='Claims']:checked").val() === "Yes" && claimCount === 0 && !isClaimFilled()) {
        $('#btnAddClaim').trigger("click");
        return false;
    } else if ($("input[name='Claims']:checked").val() === "Yes" && isClaimFilled()) {
        $("#dialog-claim-error").modal("show");
        return false;
    } else {
        //Lets first check for duplicates
        e.preventDefault();

        var result = clientClaimDuplicationCheck(function (isContinue) {
            var claimCount = isContinue.length;

            if (claimCount === undefined || claimCount.length == 0) {
                // array empty or does not exist when callback is done. 0 will be passed to resume default behaviour
                claimCount = isContinue;
            }

            if (claimCount != undefined || claimCount != null) {
                if (claimCount > 0) {

                    $.each(isContinue, function (index, item) {
                        addClaimDuplicateList(claimIndex, item.Desc, item.Year, item.Month);
                    });
                    e.preventDefault();
                    $("#claimDuplicateList").show();
                    $("#dialog-nav-driver-duplicateClaims").modal("show");
                }
                else {
                    // Prevent infinite loop
                    $(this).unbind("click");
                    
                    //Now submit form, all validation passed - resume default behavior
                    //  $("#btnNextValidated").submit();
                    $('#btnNextValidated').trigger("click");
                }
            }
        });
    }
});

$("#btnNextValidated").on("click", function (e) {
    $('#ClaimYear').removeClass("input-validation-error");
    var span = $("div").find("[data-valmsg-for='ClaimYear']");
    span.removeClass("field-validation-error").text("");

    setTimeout(ss.isValidPage, 100);
    return true;
});

function clientClaimDuplicationCheck(callback) {
   // var isContinue;
    //post data to the server
    $.ajax({
        url: "/Service/ClientClaimDuplicationCheck",
        type: 'POST',
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (data) {
            callback(data);
        },
        error: function (a, b, c) {
            var error = a;
        }
    });
 }

     function addClaimDuplicateList(id, name, year, month) {
    $('#showClaimDuplicateList').append('<div id="claimDuplicateItem' + id + '" data-claim-key="0" class="control-label label-heading-3 label-input-claimSubTitle">' +
        '<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12"><ul class="claimUl"><li>' + name + ' ' + month + '/' + year + '</li></ul></div>' +
        '</div>');
}

有没有办法恢复默认行为并调用按钮的Post方法?

在下面的代码行中,您再次触发对按钮的单击,以便实际将表单提交到后端

//Now submit form, all validation passed - resume default behavior
//  $("#btnNextValidated").submit();
$('#btnNextValidated').trigger("click");
您应该知道,表单提交按钮始终位于表单内部,而按钮单击事件最终将触发表单提交事件,然后将表单数据发布到表单URL

基本上,在验证发生后,您不必再次触发按钮上的单击事件,只需在表单本身上触发提交事件即可

$("#formId").submit();

非常感谢你!这很好用。将在允许的情况下尽快授予您奖金(只能在创建奖金24小时后授予),感谢您的帮助!
$("#formId").submit();