首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >仅当函数返回true时才提交表单

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

Stack Overflow用户
提问于 2015-07-25 13:23:06
回答 3查看 4.7K关注 0票数 3

只有当foo返回true时,我才需要一种方法来提交表单。我尝试过此代码,但即使foo返回false,它也会提交表单。

代码语言:javascript
复制
<input type="submit" value="submit" onclick="return foo();" />
<script type="text/javascript">
    function foo() {
        // if... return true
        // else return false
    }
</script>

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

EN

回答 3

Stack Overflow用户

发布于 2015-07-25 14:02:36

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

代码语言:javascript
复制
 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();
    });
票数 2
EN

Stack Overflow用户

发布于 2015-07-25 13:30:33

一种可能的解决方案是使用表单的提交事件。您可以将条件放在submit事件处理程序中,这样当foo()没有返回true时,提交就会停止。

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

代码语言:javascript
复制
document.getElementById('myForm').submit(function(e) {
  if (!foo()) {
    e.preventDefault(); 
  }
})
票数 1
EN

Stack Overflow用户

发布于 2015-07-25 13:57:18

您可以使用ajax提交。

代码语言:javascript
复制
<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: ");
    }
}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31623253

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档