我试图弄清楚如何在用户按下表单上的提交按钮后几秒钟运行一大块代码。我的测试页面正在等待适当的时间并正确执行代码块,但是它不是在等待提交事件,而是在页面加载时启动我的计时器。好像我没有以正确的方式使用.addEventListener;有谁看到我的问题?我使用的是最新版本的Firefox,而不是IE6或类似的东西。
<html>
<head>
<title>Listener Test</title>
</head>
<body>
<form id="travelInfo">
Depart: <input type="text" name="depart" value="BWI" id="depart"><br />
Arrive: <input type="text" name="arrive" value="LAX " id="arrive"><br />
<input type="submit" name="submit" value="Send Form" id="Submit">
</form>
<script type="text/javascript">
window.addEventListener('submit', timeFunction(), true);
function timeFunction()
{
var t=setTimeout("handler()",3000);
}
function handler()
{
alert("Hello");
}
</script>
</body>
</html>
答案 0 :(得分:4)
替换
window.addEventListener('submit', timeFunction(), true);
与
window.addEventListener('submit', timeFunction, true);
在我的other answer中查看调用函数和引用函数之间的区别。
此外,而不是做
setTimeout("handler()", 3000);
基本上会在超时发生时进行评估,您可以直接将handler
函数的引用传递给setTimeout。注意没有引号和括号。
setTimeout(handler, 3000);