Hmm, this gets much simpler when you bind on the "change" event instead of "keypress" in your custom directive:

- enter/blur actions triggered automatically only when input has changed, built-in browser goodness
- you can remove the conditional logic and pristine setting from this function
- you can remove the `ng-blur` from the input
- you don't need the form wrapper anymore

At least for me all the corner cases seem to work that way. Am I missing something?