It is surprising that the validate function is not called on blur. This appears to make it impossible to disable buttons while invalid. Unfortunately, <button data-bind="disabled: field"> doesn't work though <input type="submit" data-bind="disabled: field"> does work.
I tried hacking this by calling validate() in a timer. The problem is the error msgs appear before the inputs have been dirtied.
Another issue is that Model inherits from Observable but binding a Model instance to a form causes exceptions.
Another issue is I don't see a Model.validate() method or a way to bind a Model instance.
Is there a way to change tooltip position in the errorTemplate?