Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.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/2/jquery/72.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_Form Submit - Fatal编程技术网

如何在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." );     
};