What's Happening
You've a site under automation, and everything works great when you interact with it yourself. When you use Selenium, however, your UI behaves funny. Typing in a field doesn't trigger validation it should, or parts of the page which should show up after an interaction, don't.
How To Fix It
Event Triggers
Sometimes, the element which has focus needs to change for user interaction logic to be triggered. This is sometimes skipped during a Selenium test. It's pretty easy to correct; Just use your Selenium library's send_keys method to send a tab key to the field you've just edited. This should trigger any onchange validation (although see the next section for a caveat).
Synthetic Events
Javascript events can happen during Selenium driven user interactions in one of two ways. The first, native events, are the normal JS events triggered by the browser which more accurately simulate the user's actions. Synthetic events are directly created by Selenium, and are more likely to work on all platforms. Unfortunately, Synthetic events aren't noticed by the browser, so they don't always trigger events like validations.
This means that things like sending a tab to a field won't always move user focus to the next field, causing validations to not fire. Even more frustrating, some of the Selenium bindings request Synthetic Events be used by default for Remote WebDriver sessions. This means your tests might work locally, then fail on Sauce Labs, causing heartache all round.
But, it's relatively easy to fix, and there are two ways you can attempt to do so.
The first, is to explicitly click on another field, once you've completed editing another. This isn't always reliable, as it depends on what events your validations fire on (Which is an implementation detail you'd have to work out with your team).
The second, is to specifically request Native events when setting your desired capabilities. By setting the 'nativeEvents' capability to 'true', you'll get a Native Event powered session, and all your logic should work as expected on most platforms. This can change how other parts of your test react, if they were previous written for Synthetic events, so be careful.
You can read more about Synthetic VS Native events at Selenium's site.
(Oh, and one more thing; In Firefox, support for forcing Native Events is limited. Firefox requires the Selenium team to compile FirefoxDriver for each version of Firefox, so you are *forced* to use Synthetic events for every version except the latest version, the previous version, the ESR version, and the last ESR version... and that's at the time Selenium was released. EG, if the latest Selenium was released when Firefox was at version 30, and since then Firefox has released version 31 and 32, you're still only able to use native events with Firefox 30)