В настоящее время я использую Jquery Validation и Qtip вместе, чтобы иметь дело с фактической проверкой и отображением информации на экране, используя красивые уведомления в стиле всплывающей подсказки при ошибках проверки с использованием компонента errorPlacement параметров проверки.
В настоящее время каждая модель представления имеет свой собственный метод для настройки и запуска проверки и обратных вызовов, однако я пытался найти более удобный способ сделать это, будь то добавление пользовательской привязки для настройки моих правил проверки через привязки данных или альтернативный способ, но по-прежнему дающий те же результаты (т. е. errorPlacement запускается, когда возникает ошибка проверки, и указывает Qtip отображать ошибку для данного элемента).
Теперь, прежде чем я начал делать это самостоятельно, я просто проверил в Интернете и нашел Knockout Validation, который я сначала подумал, что отличная идея, я мог бы применить свою логику проверки непосредственно к данным в моей модели представления, а затем просто найти какой-то обратный вызов, чтобы запустить Qtip, однако, похоже, нет никакого обратного вызова, который я могу найти задокументированным. Библиотека, кажется, делает все, что я хочу, для проверки, но не для отображения. Я просмотрел исходный код и примеры, но не увидел ничего, кроме ko.validation.group(viewModel), который дал бы мне наблюдаемое, содержащее ошибки, но я не уверен, смогу ли я использовать это так же, как я ожидание.
Вот пример того, как происходит моя текущая проверка:
/*globals $ ko */
function SomeViewModel() {
this.SetupValidation = function () {
var formValidationOptions = {
submitHandler: self.DoSomethingWhenValid,
success: $.noop,
errorPlacement: function (error, element) {
if (!error.is(':empty'))
{ qtip.DoSomethingToDisplayValidationErrorForElement(element, error); }
else
{ qtip.DoSomethingToHideValidationErrorForElement(element); }
}
};
$(someForm).validate(formValidationOptions);
this.SetupValidationRules();
};
this.SetupValidationRules = function() {
$(someFormElement1).rules("add", { required: true, minlength: 6, maxlength: 20, alphaNumeric: true });
$(someFormElement2).rules("add", { required: true, minlength: 6, maxlength: 20 });
$(someFormElement3).rules("add", { required: true, email: true, });
};
}
В настоящее время я уверен, что могу устранить необходимость в методе правил проверки, добавив пользовательскую привязку, чтобы я мог установить проверку в привязке данных, однако, если возможно, я хотел бы использовать такой же подход обратного вызова с существующим Knockout- Привязка валидации.