标签:addeventlistener javascript events javascript-events form-submit
我试图找出如何在用户按下表单上的提交按钮几秒钟后运行一段代码.我的测试页正在等待适当的时间并正确执行代码块,但是似乎没有等待Submit事件,而是在页面加载时启动了我的计时器.好像我没有以正确的方式使用.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>
解决方法:
更换
window.addEventListener('submit', timeFunction(), true);
同
window.addEventListener('submit', timeFunction, true);
在我的other answer中可以看到调用函数和引用它之间的区别.
另外,不要做
setTimeout("handler()", 3000);
基本上会在发生超时时进行评估,您可以将对处理函数的引用直接传递给setTimeout.注意没有引号和括号.
setTimeout(handler, 3000);
标签:addeventlistener,javascript,events,javascript-events,form-submit 来源: https://codeday.me/bug/20191013/1909901.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。