我有一个输入框,它有两个事件处理程序绑定在上面。
验证 & 自动保存
显然,在保存之前我想进行验证。如果验证失败,将会向输入框添加“invalid”类,autosave将在继续之前检查该类。
这样已经足够好了,但是否有一种方式可以保证在所有情况下都先运行验证,然后再自动保存呢?
我有一个输入框,它有两个事件处理程序绑定在上面。
验证 & 自动保存
显然,在保存之前我想进行验证。如果验证失败,将会向输入框添加“invalid”类,autosave将在继续之前检查该类。
这样已经足够好了,但是否有一种方式可以保证在所有情况下都先运行验证,然后再自动保存呢?
function onSaved() {
if (!validate()) {
// set class
return;
}
// do the save
}
已经有答案了,但是需要补充一点知识,事件处理程序的顺序不能被依赖。在任何给定的实现中,它可能是可预测的,但这可以从一个(Javascript)实现到另一个实现和/或随时间变化而改变。唯一确定的是它们都会被执行,但不确定执行顺序。
请注意,当DOM对象有一个事件处理程序,而同一个事件还有一个子元素或父元素的事件处理程序时,哪个会先执行并不总是清楚的。详见http://www.quirksmode.org/js/events_order.html