Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.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 仅当函数返回true时提交表单_Javascript - Fatal编程技术网

Javascript 仅当函数返回true时提交表单

Javascript 仅当函数返回true时提交表单,javascript,Javascript,我需要一种只有在foo返回true时才提交表单的方法。我尝试了这段代码,但即使foo返回false,它也会提交表单 <input type="submit" value="submit" onclick="return foo();" /> <script type="text/javascript"> function foo() { // if... return true // else return false }

我需要一种只有在foo返回true时才提交表单的方法。我尝试了这段代码,但即使foo返回false,它也会提交表单

<input type="submit" value="submit" onclick="return foo();" />
<script type="text/javascript">
    function foo() {
        // if... return true
        // else return false
    }
</script>

函数foo(){
//如果…返回true
//否则返回false
}

如果我使用onsubmit函数,那么它首先提交。因此,对我来说,这并不好。

一个可能的解决方案是使用表单的提交事件。您可以将条件放入submit事件处理程序中,以便在
foo()
未返回true时停止提交

(注意:我必须猜测表单的选择器可能是什么,因为它不是问题的一部分)


您可以使用ajax提交

<form class="formbox" method="post" action="/your/action/url" id="myForm" name="myForm">
                    <input type="text" id="name" class="name" name="name" value=""/>
                    <input type="submit" value="submit" onclick="return foo();" />                      
              </form>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>

<script type="text/javascript">
function foo() {
    if(1==1) {
        alert("Success: Going to call the function");
        $("#myForm").submit(); //calling function.
    } else {
        alert("Error: ");
    }
}

函数foo(){
如果(1==1){
警报(“成功:将调用函数”);
$(“#myForm”).submit();//调用函数。
}否则{
警报(“错误:”);
}
}

您可以尝试使用jquery ajax submit的替代方法,如下所示,我正在使用的方法可能对您也有帮助

 var request;
    $("#YourFormId").submit(function(event){

  if(yourFunction()==false) {
         return false;
     }

        if (request) {
            request.abort();
        }
       var $form = $(this);
       var $inputs = $form.find("input, select, button, textarea");
       var serializedData = $form.serialize();
       $inputs.prop("disabled", true);
       request = $.ajax({
            url: "yourFormActionPage.php",
            type: "post",
            data: serializedData
        }); 
        request.done(function (response, textStatus, jqXHR){
            //ok
        });

        request.fail(function (jqXHR, textStatus, errorThrown){
             //track it
        });

        request.always(function () {
            $inputs.prop("disabled", false);
        });

        event.preventDefault();
    });

您的浏览器控制台中是否有任何错误不,控制台中的任何错误-看起来很好-您是否可以尝试在fiddleHTML5表单中重新创建问题验证将自动完成此操作…?我知道,但它也必须在旧浏览器上工作。
 var request;
    $("#YourFormId").submit(function(event){

  if(yourFunction()==false) {
         return false;
     }

        if (request) {
            request.abort();
        }
       var $form = $(this);
       var $inputs = $form.find("input, select, button, textarea");
       var serializedData = $form.serialize();
       $inputs.prop("disabled", true);
       request = $.ajax({
            url: "yourFormActionPage.php",
            type: "post",
            data: serializedData
        }); 
        request.done(function (response, textStatus, jqXHR){
            //ok
        });

        request.fail(function (jqXHR, textStatus, errorThrown){
             //track it
        });

        request.always(function () {
            $inputs.prop("disabled", false);
        });

        event.preventDefault();
    });