Why would it be a pain? Hooking onChange or onBlur or onSubmit, depending on the type of input, works like a charm, and covers whatever you need to validate. There's also some great UI component libraries available if you don't feel like writing your own.