В настоящее время я использую Jquery Validation и Qtip вместе, чтобы справиться с фактической проверкой и отображением информации на экране, используя приятные подсказки стиля подсказок при ошибках проверки с использованием компонента errorPlacement опций проверки.
viewModel имеет свой собственный пользовательский метод для настройки и запуска проверки и обратных вызовов, однако я пытался найти более хороший способ сделать это, будь то добавление пользовательской привязки для настройки моих правил проверки через привязки данных или альтернативныйкстати, но все равно дает те же результаты (то есть errorPlacement запускается при возникновении ошибки проверки и сообщает Qtip, что нужно отобразить ошибку для данного элемента).
Теперь, прежде чем я сам приступил к созданию, я только что проверил онлайн иfound Knockout Validation , который я изначально считал хорошей идеей, я мог бы применить свою логику проверки непосредственно к данным в моей viewModel, а затем просто найти какой-то обратный вызов для получения 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-Validation.