The validation occurs on each onblur event for each form element. As each user types in some values and moves to the next form element, the value (and all other values previously entered) will be sent to the server for validation. The entire validation stack is run, including visitor validators and your action's validate() method.
If there is an error, like the pure implementation, the HTML and DOM will be updated immediately.
For an example of this, see AJAX Validation.