2010-11-10 111 views
4

我正在尝试自动提交表单,延迟时间为我正在编写的Chrome扩展,它似乎并未提交。下面是我的形式和javascript:如何以延迟提交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> 
+0

出于某种原因,代码不会进入submitForm()函数。我通过在submitForm()函数的开始处添加一个警报来测试它。 – milan 2010-11-10 19:48:34

回答

2

不知道的情况下,但它可能是该页面还没有被完全加载 - 你可以尝试把

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

身体的onLoad( )事件。作为另一件事,尝试在setTimeout之前和submitForm()的开始处添加一个简单的警报,以确认超时正在被解雇。

+0

出于某种原因,代码不会进入submitForm()函数。我通过在submitForm()函数的开始处添加一个警报来测试它。 – milan 2010-11-10 19:37:39

1

这里就是你需要做什么(复制和粘贴):

<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> 

或者,如果你想在5秒后提交表单,重视windown.onload事件调用btnSearchClick()之类这样:在window.onload = btnSearchClick

+0

我无法更改表单。我正在撰写Chrome的扩展程序。 – milan 2010-11-10 19:38:51

0

下面是一个更简单的解决方案:

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

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

试试:

<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>