Yes testValid somehow needs to know whether or not it should actually clear when triggered.

Basically if it was required, and an error was set, and testValid gets called, and the input hasn't changed, it should leave that error alone.  (*phew*)