How do I submit a form in Javascript with a delay

风流意气都作罢 提交于 2019-12-06 04:10:42

问题


I am trying to submit the form automatically with a delay in a chrome extension I am writing and it does not seem to be submitting. Below is my form and javascript:

function submitForm() { // submits form
    document.getElementById("ismForm").submit();
}

if (document.getElementById("ismForm")) {
    setTimeout("submitForm()", 5000); // set timout 
}


<form method="post" id="ismForm" name="ismForm" action="http://www.test.com" class=""> 
<label for="searchBox">Search </label>
<input type="text" id="searchBox" name="q" value=""> <input type="hidden" id="sayTminLength" value="3"><input type="hidden" id="coDomain" value="US"><input class="button" type="submit" id="search.x" name="search.x" value="Search" autocomplete="off"> 
</form>

回答1:


Don't know the context, but it might be that the page has not been loaded yet completely - you might try putting

if (document.getElementById("ismForm")) {
    setTimeout("submitForm()", 5000); // set timout 
}

in body onLoad() event. As another thing, try putting as simple alert before setTimeout and at the start of submitForm() to confirm the timeout is getting fired in the first place.




回答2:


Here's what you need to do (copy and paste):

<html>
    <head>
    <script type="text/javascript">
    function submitForm() { // submits form
        document.getElementById("ismForm").submit();
    }
    function btnSearchClick()
    {
        if (document.getElementById("ismForm")) {
            setTimeout("submitForm()", 5000); // set timout 
       }
    }
    </script>
    </head>
    <body>
    <form method="post" id="ismForm" name="ismForm" action="http://www.test.com" class=""> 
    <label for="searchBox">Search </label>
    <input type="text" id="searchBox" name="q" value=""> <input type="hidden" id="sayTminLength" value="3">
    <input type="hidden" id="coDomain" value="US">
    <input class="button" onclick="btnSearchClick();" type="button" id="search.x" name="search.x" value="Search" autocomplete="off"> 
    </form>
    </body>
    </html>

Or, if you want to submit the form after 5 seconds, attach to the windown.onload event the call to btnSearchClick() like so: window.onload=btnSearchClick




回答3:


Try this:

<form method="post" action="yourpage/" id="customForm">
    <input type="text" name="input1"/>
    <input type="text" name="input2"/>
</form> 
<button id="submit">SubmitForm</button><!-- Outside of form -->
<script>
    function submitForm() {
        document.getElementById("customForm").submit()
    }

    document.getElementById('submit').onclick = function() {
        setTimeout(submitForm, 3000); 
    }
</script>



回答4:


Here is one more simple solution:

<script type="text/javascript">
    function formSubmit(){
          document.getElementById("ismForm").submit();
    }

    window.onload=function(){ 
          window.setTimeout(formSubmit, 5000);
    };
</script>



回答5:


Here is the way that works for me:

 const form = $("#formId");

     form.submit(() => {

//some other functions you need to proceed before submit

     setTimeout(() => {}, 1200);
            return true;
    });

Now it will wait 1200 ms before submitting the form. Also, if you return false instead of true, the form won't submit.



来源:https://stackoverflow.com/questions/4148210/how-do-i-submit-a-form-in-javascript-with-a-delay

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!