如何从jQuery触发器方法获取布尔返回值?

时间:2011-07-03 06:12:40

标签: events jquery-validate validation jquery

我想使用jQuery的触发器方法触发自定义事件:

$(wizard).trigger('validatingStepValues');

然后在向导的当前步骤代码中,我订阅此事件如下:

$(wizard).bind('validatingStepValues', function (){
    // Validating step's form data here; returning false on invalid state.
});

然后在我的向导中,如果从验证过程返回错误值,我希望能够阻止用户进入下一步吗?我希望有类似的东西:

$(wizard).trigger('validatingStepValues', validReturnCallback, invalidReturnCallback)

1 个答案:

答案 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事件处理程序会取消此传播。因此,您可以将所需的成功回调函数绑定为向导父节点上的事件侦听器。但是,这不会允许您执行失败回调。