Недавно я создал обработчик привязки, чтобы включить подключаемый модуль JQuery Validation в форму с использованием синтаксиса привязки данных. Я обнаружил, что мне нужно предоставить более одной информации обработчику. Мне нужно было указать флаг для принудительной проверки и обратный вызов для запуска после прохождения проверки.
Вопросы:
Как лучше использовать несколько аргументов? Я просто полагался на синтаксис нотации объекта, но также мог предоставить другую привязку и проверить эту привязку через параметр allBindings, переданный обработчику...
Как лучше всего предоставить функцию обратного вызова обработчику?
Ниже приведен код js, определяющий обработчик, и html-код для применения обработчика:
<form id="step1"
data-bind="jqValidation:{enforce: true,
submitHandler: doSomethingInVM}">
<fieldset data-bind="with:searchRequest">
//fields
</fieldset>
<button type="submit">submit</button>
</form>
ko.bindingHandlers.jqValidation = {
update: function (element, valueAccessor, allBindingsAccessor, viewModel) {
var accessor = valueAccessor();
//need unwrapobservable??
if (accessor.enforce) {
$(element).find(':submit').removeClass('cancel');
$(element).validate({
submitHandler: function () {
if ($.isFunction(accessor.submitHandler))
accessor.submitHandler();
}
});
} else
$(element).find(':submit').addClass('cancel');
}
};