Я создал JSFiddle, чтобы помочь продемонстрировать мой вопрос: http://jsfiddle.net/jeffreyrswenson/CrYWn/5/Validate на размывании
Вот что я хотел бы видеть:
- сообщение не должно появляться при загрузке страницы.
- Сообщения должны появляться при нажатии кнопки отправки.
- Сообщения должны появиться после изменения входного значения, и пользователь покинет элемент. (Вкладки или клики в следующее поле)
- Сообщения должны появляться после того, как пользователь покидает вход без изменения. (Например, поле необходимо, и пользователь вставляет это поле в поле, но не вводит значение. когда это произойдет.)
Первые четыре работы, как я ожидал. Является ли последний элемент возможным, и если да, что мне нужно изменить, чтобы включить это поведение?
HTML:
<label>First name:
<input data-bind='value: firstName' />
</label>
<br/>
<label>Last name:
<input data-bind='value: lastName' />
</label>
<br/>
<button type="button" data-bind='click: submit'>Submit</button>
<br/>
<span data-bind='text: errors().length'></span> errors
ViewModel:
var viewModel = function() {
ko.validation.configure({
decorateElement: true,
registerExtenders: true,
messagesOnModified: true,
insertMessages: true,
parseInputAttributes: true,
messageTemplate: null
});
this.firstName = ko.observable().extend({
required: true
});
this.lastName = ko.observable().extend({
required: true,
pattern: {
message: 'Hey this doesnt match my pattern',
params: '^[A-Z0-9]+$'
}
});
this.submit = function() {
if (this.errors().length == 0) {
alert('Thank you.');
} else {
this.errors.showAllMessages();
}
};
this.errors = ko.validation.group(this);
};