Javascript事件处理程序命令

时间:2011-02-28 15:16:56

标签: javascript

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

验证&自动保存

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

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

4 个答案:

答案 0 :(得分:13)

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

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

答案 1 :(得分:8)

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

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

  // do the save
}

答案 2 :(得分:2)

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

如果您的问题的答案不是问题,请参阅this postthis onethis one

答案 3 :(得分:0)

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

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