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