[英]How do I submit a form in Javascript with a delay
我正在嘗試在我正在編寫的 chrome 擴展中延遲自動提交表單,但它似乎沒有提交。 下面是我的表單和 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>
嘗試這個:
<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>
不知道上下文,但可能是頁面尚未完全加載 - 您可以嘗試放置
if (document.getElementById("ismForm")) {
setTimeout("submitForm()", 5000); // set timout
}
在主體 onLoad() 事件中。 作為另一件事,嘗試在 setTimeout 之前和 submitForm() 開始時放置一個簡單的警報,以確認首先觸發超時。
這是您需要執行的操作(復制和粘貼):
<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 秒后提交表單,將調用 btnSearchClick() 附加到 windown.onload 事件,如下所示:window.onload=btnSearchClick
這是一個更簡單的解決方案:
<script type="text/javascript">
function formSubmit(){
document.getElementById("ismForm").submit();
}
window.onload=function(){
window.setTimeout(formSubmit, 5000);
};
</script>
這是對我有用的方法:
const form = $("#formId");
form.submit(() => {
//some other functions you need to proceed before submit
setTimeout(() => {}, 1200);
return true;
});
現在它將在提交表單之前等待 1200 毫秒。 此外,如果您返回 false 而不是 true,表單將不會提交。
jQuery 中的解決方案(使用 expando),可輕松編輯為純 JavaScript:
$('form').eq(0).on('submit', function(e) {
var $form = $(this);
if ($form.data('blocked') !== true) {
// mark the form as blocked
$form.data('blocked', true);
console.log('Scheduling form submit...');
window.setTimeout(function() {
console.log('Submitting!');
$form.submit();
$form.data('blocked', false);
}, 1000);
// disallow submit
return false;
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.