如何在javascript中以编程方式提交表单之前检查条件
我有一个表格,我只想在条件为真时提交。但也有一种情况,我想以编程的方式 手动提交表单时,请执行以下操作:如何在javascript中以编程方式提交表单之前检查条件,javascript,jquery,form-submit,Javascript,Jquery,Form Submit,我有一个表格,我只想在条件为真时提交。但也有一种情况,我想以编程的方式 手动提交表单时,请执行以下操作: <input type="submit" value="submit" onclick="return checkForTheCondition();"/> 因此,我尝试在提交表单之前以编程方式检查条件,但当我使用以下代码时,它甚至没有提交由$('form').submit()完成的表单: checkForTheCondition()返回true或false 是否可以通过编
<input type="submit" value="submit" onclick="return checkForTheCondition();"/>
因此,我尝试在提交表单之前以编程方式检查条件,但当我使用以下代码时,它甚至没有提交由$('form').submit()完成的表单代码>:
checkForTheCondition()
返回true
或false
是否可以通过编程方式提交表单,就像手动提交表单一样,在提交表单之前检查条件?如果有条件地返回true/false,那么代码应该可以工作。如果要在条件失败时警告任何消息,可以尝试此操作
$(function(){
$('form').submit(function() {
if(!checkForTheCondition()){
//alert message here
return false;//This will stop the form from being submitted.
}
return true;
});
});
您应该能够这样做:
if (checkForTheCondition()) {
$('form').submit();
}
<input type="submit" value="submit">
<script>
$(document).ready(function () {
$('form').submit(function() {
return checkForTheCondition();
});
});
</script>
编辑:我想我现在明白你的问题了
调用$('form').submit(函数(){…})代码>不会触发该事件。该函数不是回调函数!相反,它将函数绑定到submit事件。所以当你称之为:
$('form').submit(function() {
return checkForTheCondition();
});
您不触发事件,而是绑定返回checkForTheCondition()
这与onclick=“return checkForTheCondition();”
有些相同,但它将在每次提交表单时调用,而不仅仅是在单击提交按钮时调用
我会这样做:
if (checkForTheCondition()) {
$('form').submit();
}
<input type="submit" value="submit">
<script>
$(document).ready(function () {
$('form').submit(function() {
return checkForTheCondition();
});
});
</script>
这将使$('form')。提交()
并在提交前单击提交按钮调用检查条件()。享受吧 我建议更紧密地绑定submit
事件。表单可以在不单击“提交”按钮的情况下提交。@jpea:我已经尝试了您的代码,检查了日志,但由于某些原因,它没有进入回调函数。但是,我手动单击submit按钮,它会在检查条件后提交表单。我不明白为什么它没有进入回调函数?@cheeken:我现在要试试,因为回调函数似乎不起作用。我几乎不知道任何javascript.oops是为了修复回调函数而编辑的-我忘记了my_值声明后的等号。@jpea:执行没有进入回调函数,我不太理解为什么。Jpuge的答案是有效的。是的,但OP可以在这里发出警告消息,如果他愿意的话。更详细地说,查看代码很容易理解实际发生了什么。@Shankarsangli:它没有进入回调函数。我查过日志了。但是,当我单击表单提交按钮时,我确实可以在日志中的true
或false
中看到checkForTheCondition()
的结果。可能是当使用附加的submit
事件处理程序执行该代码时,表单在页面上不可用。我现在将其移动到dom就绪事件,请尝试我编辑的答案。不,他不能。有一个submit按钮只是提交,它不会在途中通过条件检查。我相信他想从代码触发submit事件,并想测试条件检查()。这段代码将进行验证并引发事件。@JPuge:它不会比这更干净,幸运的是它也解决了问题,我也会接受答案,但我无法理解为什么执行不会进入回调函数?我仍然看到一些非常令人惊讶的事情,我的断点在代码第一次运行时不起作用,但是当我再次回到页面时,让代码以编程方式再次运行,断点也起作用。正在从设置超时(triggerSubmit,timeLeft)
调用triggerSubmit()
。它是否必须与setTimeout()
配合使用?
if ($( "#formID" ).submit()){
alert( "Handler for .submit() called." );
};
<form method="post" action="somepage" onsubmit="return checkForTheCondition();">
<!-- Inputs -->
<input type="submit" value="submit">
</form>
if ($( "#formID" ).submit()){
alert( "Handler for .submit() called." );
};