ich ein JSFiddle erstellt haben auf meine Frage zu helfen zu demonstrieren: http://jsfiddle.net/jeffreyrswenson/CrYWn/5/Validate auf Blur
Hier ist, was ich möchte, um zu sehen:
- Nachrichten nicht, wenn Seite geladen wird angezeigt.
- Nachrichten sollten angezeigt werden, wenn die Senden-Schaltfläche gedrückt wird.
- Meldungen sollten angezeigt werden, nachdem der Eingabewert geändert wurde und der Benutzer das Element verlässt. (Tabs oder klickt zum nächsten Feld)
- Die Meldungen sollten erscheinen, nachdem der Benutzer eine Eingabe ohne Änderung gelassen hat. (Zum Beispiel ist ein Feld erforderlich und der Benutzer durchsucht das Feld, gibt aber keinen Wert ein Validierungsmeldung erscheint, wenn dies geschieht.)
Die ersten vier funktionieren wie erwartet. Ist das letzte Element möglich und wenn ja, was muss ich ändern, um dieses Verhalten zu aktivieren?
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
Ansichtsmodell:
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);
};