我希望在我的页面上发生一件非常简单的事情,在用户提交表单之后,在实际提交表单之前必须有一段延迟,但是它似乎不能用于html表单:
<form action='index.php' method='get'>
<input type='submit' value='Reset' name='resetBtn' onClick='PreSubmit(this.form)'>
</form>
javascript函数:
function PreSubmit(form) {
var func = function () {
form.submit();
}
setTimeout(func, 10000);
}
所以我真的很喜欢javascript,但是我怎么看,onlick事件必须调用这个javascript函数,它应该等待10秒然后才提交表单并更新页面,但是表单立即提交,为什么?在提交之前如何让它等待?任何形式的帮助将不胜感激
答案 0 :(得分:2)
添加返回onclick。
onClick='return PreSubmit(this.form)'>
并将return false添加到PreSubmit。
function PreSubmit(form){
....
//this will stop the click event
return false;
}
所以PreSubmit返回false - &gt; onClick返回false,这将停止提交按钮操作。
我认为你会考虑另一个问题,如果用户不断点击按钮会发生什么。等待另外10秒(这意味着你应该清除前一个timeID),或者只是禁用它当用户第一次点击它时。
答案 1 :(得分:2)
您需要停止提交按钮的默认行为。很多人都犯了错误的错误来做这件事,但那不是很正确it's important to understand what returning false is doing。这不是最好的方式(不显眼的JS是一个完全不同的主题),但要通过最小的改变来实现你想要的东西,请执行以下操作
HTML:
<form action='index.php' method='get'>
<input type='submit' value='Reset' name='resetBtn' onClick='PreSubmit(event, this.form)'>
</form>
JS:
function PreSubmit(event, form) {
if (event.preventDefault) {
event.preventDefault();
}
else {
event.returnValue = false;
}
var func = function () {
form.submit();
}
setTimeout(func, 10000);
}
答案 2 :(得分:0)
您需要将其设为type =“button”,而不是type =“submit”