I think that there are a few approaches that you could use. A nice option would be to use KO's hasfocus
binding: http://knockoutjs.com/documentation/hasfocus-binding.html.
You can bind against a boolean observable, and then subscribe to it. In the subscription, you can choose to only react when the value is now false.
Something like:
self.FirstName = ko.observable();
self.FirstName.focused = ko.observable();
self.FirstName.focused.subscribe(function(newValue) {
if (!newValue) {
//do validation logic here and set any validation observables as necessary
}
});
Bind against it like:
data-bind="value: FirstName, hasfocus: FirstName.focused"
I think that this would be a good option if you want it to fire everytime a user leaves the field no matter how they leave it and regardless of whether a change was actually made.