我想使用jQuery的触发器方法触发自定义事件:
$(wizard).trigger('validatingStepValues');
然后在向导的当前步骤代码中,我订阅此事件如下:
$(wizard).bind('validatingStepValues', function (){
// Validating step's form data here; returning false on invalid state.
});
然后在我的向导中,如果从验证过程返回错误值,我希望能够阻止用户进入下一步吗?我希望有类似的东西:
$(wizard).trigger('validatingStepValues', validReturnCallback, invalidReturnCallback)
答案 0 :(得分:2)
您是否考虑过使用以下内容:
function wizardValidator(successCallback, failureCallback) {
return function() {
// Validating step's form data here;
if (wasValid && successCallback) {
successCallback();
}
else if (! wasValid && failureCallback) {
failureCallback();
}
return wasValid;
};
}
$(wizard).bind('validatingStepValues', wizardValidator(validReturnCallback, invalidReturnCallback));
这要求您知道在绑定事件侦听器时要使用的回调。如果您希望能够在不同时间使用不同的回调函数,则可以定义其他事件类型,例如:
$(wizard).bind('validatingStep2Values', wizardValidator(validStep2ReturnCallback, invalidStep2ReturnCallback));
$(wizard).bind('validatingStep3Values', wizardValidator(validStep3ReturnCallback, invalidStep3ReturnCallback));
或者,通过调用trigger()
创建的事件会传播DOM层次结构。返回false
事件处理程序会取消此传播。因此,您可以将所需的成功回调函数绑定为向导父节点上的事件侦听器。但是,这不会允许您执行失败回调。