gpt4 book ai didi

javascript - 防止同一触发函数执行两次的最佳方法是什么?

转载 作者:行者123 更新时间:2023-11-28 21:17:42 25 4
gpt4 key购买 nike

触发器可以应用于表单级别和/或项目级别。让它第二次执行的最佳方法是什么?

<form id='f'>
<input id='i' type='text' />
</form>

<script>
validate = function(e) { ... }
reformat = function(e) { ... }
document.getElementById('f').addListener('change',validate,true);
document.getElementById('i').addListener('change',validate,true);
document.getElementById('i').addListener('change',reformat,true);
</script>

上下文:数据字典表示项目 i 需要立即验证,应用程序编写者表示表单中的所有项目都应立即验证。

这是同一个函数,通常调用一次,但有时调用两次。

防止 validate 函数执行两次的最佳方法是什么?

注意:e.stopPropagation() 停止对 click 事件的所有进一步调用,以便重新格式化 不再调用触发器。

最佳答案

您可以在事件参数中添加一个 prop 以确保它运行一次:

validate = function(e) { if (e.done) return; /* code */ e.done = true; }
document.getElementById('f').addListener('change',validate,true);
document.getElementById('i').addListener('change',validate,true);

DEMO

虽然我不明白为什么你要绑定(bind)事件两次

编辑:对于跨浏览器(阅读:IE)将其更改为:

validate = function(e) {
if ((e = e || window.event).done) return;
/* code */
e.done = true;
}
document.getElementById('f').addListener('change',validate,true);
document.getElementById('i').addListener('change',validate,true);

Edited DEMO

关于javascript - 防止同一触发函数执行两次的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7201021/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com