2010-11-10 4 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

ответ

2

Не знаю контекст, но это может быть, что страница не загружены полностью - вы можете попытаться положить

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

в OnLoad тела () мероприятие. Как еще одна вещь, попробуйте поставить как простое предупреждение перед setTimeout и в начале submitForm(), чтобы подтвердить, что тайм-аут уволен в первую очередь.

+0

По какой-то причине код не входит в функцию submitForm(). Я проверил это, добавив предупреждение в начале функции submitForm(). – milan

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

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>