繁体   English   中英

Javascript事件处理程序命令

[英]Javascript event handler order

我有一个输入字段,它有两个绑定到它的事件处理程序。

验证和自动保存

显然我想在保存之前验证。 如果验证失败,则将“无效”类添加到输入中,并且自动保存将在该类继续之前检查该类。

这很好用,但有没有办法保证在所有情况下自动保存之前运行Validate?

如果使用JQuery来绑定事件,则可以保证处理程序的触发顺序与它们绑定的顺序相同。 否则订单正式未定义。

如果你不能使用JQuery或类似的框架,你可以通过使用自己的自定义偶数绑定轻松地模拟它,其中你的泛型处理程序是一个函数,它保存一系列函数并按顺序调用它们。

通常你会有Save事件处理程序调用Validate(),如果一切正常并准备好保存,它将返回true。

function onSaved() {
  if (!validate()) {
    // set class
    return;
  }

  // do the save
}

为什么不只附加一个处理程序 - Validate - 并从里面调用AutoSave

对于您的问题的答案,这也不是一个问题,请参阅这篇文章这一篇这一篇

已经回答了 - 但只是为了增加这一知识,不能依赖事件处理程序的顺序。 它可以在任何给定的实现中是可预测的,但是这可以从一个(Javascript)实现改变到下一个和/或随着时间的推移。 唯一确定的是,它们都将被执行 - 但不是以什么顺序执行。

请注意,当有一个DOM对象的事件处理程序和另一个用于子对象或父对象的同一事件时,情况类似 - 首先执行哪些事件并不总是很清楚。 请参阅http://www.quirksmode.org/js/events_order.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM