如何使用javascript延迟checkform?

时间:2017-11-23 14:26:37

标签: javascript jquery

我尝试延迟10秒,然后提交这样的表格,但没有成功。如果不拖延,它仍将是真实的。

<form class="form" method="post" action="" ENCTYPE = "multipart/form-data" onsubmit="return checkform(this);" >
    <input type="submit" name="submit" value="OK">
</form>

<script language="JavaScript" type="text/javascript">
    function checkform ( form )
    {
        var test = "1";
        setTimeout(function(){
            if(test != '0'){
                return false;
            }
            else
            {
                return true;
            }
        }, 10000);
    }
</script>

我想知道,如何使用javascript延迟checkform?

3 个答案:

答案 0 :(得分:0)

您必须返回checkForm功能。回调内的return不会返回外部函数。即使这样做也必须立即,而不是10秒钟

你可以使用一个标志,这样你就可以通过再次提交表格再次在延迟中再次调用该函数

var allowSubmit = false;

function checkform(form) {
  if (allowSubmit) {
    return true;
  } else {
    var test = "1";
    setTimeout(function() {
      if (test === '1') {
        // when validation passes resubmit with updated flag
        allowSubmit = true;
        form.submit();
      }
    }, 10000);

    return false;
  }
}

答案 1 :(得分:0)

因此,问题在于提交请求的结果与您在函数中返回内容的结果相同。

例如,如果您有这样的事情:

function returnExplanation(){

    return 0;
    console.log("You will never see me");

}

返回后,您永远不会在控制台中看到该文本。

提交功能相同。虽然还有其他一些方法可以实现这一点,但我对您的代码进行了一些调整以实现您的目标。

 <form class="form" id="submitForm" method="post" action="" ENCTYPE = "multipart/form-data">
        <input type="button" name="submit" value="OK">
    </form>

    <script language="JavaScript" type="text/javascript">
        $(document).ready(function () {
            $('#submitForm').on('click', function ()
            {
                var test = 1;
                setTimeout(
                        function ()
                        {
                            if (test !== 0)
                            {
                                console.log("false");
                                return false;
                            } else
                            {
                                console.log("true");
                                return true;
                            }
                        }, 10000);
                $('#submitForm').submit();
            });
        });
    </script>

我做的第一件事就是给你的表格一个“id”。这允许jQuery(或javascript)轻松破译他们应该与哪个元素进行通信。

接下来,我删除了你的“onsubmit”属性,并添加了相应的jQuery来响应click事件。

之后,我将您的按钮从“提交”更改为“按钮”类型。

最后,在超时后,您的表单仍然会显示以下行:

 $('#submitForm').submit();

我希望这有助于您成为更好的HTML / jQuery程序员。

答案 2 :(得分:0)

如果你有jQuery库,这是一个更好的方法。在您的情况下,页面会被提交给自己并刷新,因此您的10秒会重置。

<form class="form" method="post" action="" enctype = "multipart/form-data" >
    <input type="submit" name="submit" value="OK">
</form>

$(function(){
   $("form").bind("submit", function(e){
        e.preventDefault();
        e.stopPropagation();

        var test = "1";
        setTimeout(function(){ 
           if(test != '0'){
                //return false;
                alert("false");
            }else{
                 alert("true")
                //return true;
            } 
        }, 10000);
    });
});