onsubmit没有提交表单,即使从AJAX验证返回true也是如此



我的表单上有一个ajax函数来检查重复的会计代码,但是即使没有重复(必须提交和处理才能插入数据库(,表单也不会提交。

这是我的 Html 代码:

<form action="<?php print base_url(); ?>input/insertLedgerGroup" name="form_ldgroup" onsubmit="return checkDupCode()" id="frmledger" method="post" accept-charset="utf-8">

我的阿贾克斯代码:

function checkDupCode() {
var c1 = document.forms["form_ldgroup"]["coa1"].value;
var c2 = document.forms["form_ldgroup"]["coa2"].value;
var wrn1 = "Coa Code";
var wrn2 = "Sudah Terpakai !";
$.ajax({
type: "POST",
url: "<?php print base_url()."input/checkDupCoa"; ?>",
data: {"hsl": c1, "hsl2": c2, "csrf_token" : $("input[name=csrf_token]").val()},
dataType: 'json',
success: function(hasil) { 
if(Object.keys(hasil).length>0){
alert(wrn1+" "+hasil['code1']+"."+hasil['code2']+" "+wrn2); 
}else{
$("#frmledger").submit();
}   
}
});
return false;
}

当您调用时:

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

就像一次又一次地调用你的 checkDupCode函数一样。但是每次调用此函数时,您都会返回 false,没有提交。

为了避免这种情况,您可以使用 HTMLFormElement.submit(( 元素方法。这样你就不会再调用你的checkDupCode函数了。

在下面的代码片段中,我添加了错误回调以创建证据:

function checkDupCode() {
var c1 = document.forms["form_ldgroup"]["coa1"].value;
var c2 = document.forms["form_ldgroup"]["coa2"].value;
var wrn1 = "Coa Code";
var wrn2 = "Sudah Terpakai !";
$.ajax({
type: "POST",
url: "input/checkDupCoa",
data: {"hsl": c1, "hsl2": c2, "csrf_token": $("input[name=csrf_token]").val()},
dataType: 'json',
success: function (hasil) {
if (Object.keys(hasil).length > 0) {
alert(wrn1 + " " + hasil['code1'] + "." + hasil['code2'] + " " + wrn2);
} else {
$("#frmledger").submit();
}
},
error: function() {
$("#frmledger")[0].submit();
}
});
return false;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form action="<?php print base_url(); ?>input/insertLedgerGroup" name="form_ldgroup" onsubmit="return checkDupCode()"
id="frmledger" method="post" accept-charset="utf-8">
<input type="text" name="coa1" value="coa1">
<input type="text" name="coa2" value="coa2">
<input type="submit" value="Submit">
</form>

最新更新