Как получить логическое возвращаемое значение из метода триггера jQuery? - PullRequest
0 голосов
/ 03 июля 2011

У меня есть пользовательское событие, которое я хочу запустить, используя метод триггера 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 Ответ

2 голосов
/ 03 июля 2011

Рассматривали ли вы использовать что-то вроде:

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 обработчик события отменяет это распространение.Таким образом, вы можете связать желаемую функцию обратного вызова в качестве прослушивателя событий на родительском узле вашего мастера.Однако это ничего не сделает для того, чтобы ваш обратный вызов был выполнен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...