Client vs. Server Side Validation...
What I do - and keep in mind I mainly write Enterprise type apps, so we have more controlled users - is to do field level validation on the client, including specific parsing for string formats (like email addresses, dates, etc.), then use a general DB handler on the server-side to catch any erroneous data and rollback the transaction (assuming you're using - and you should be - transactions).
So clients running JS get a nice, discreet validation notification (i.e., "Please use the format mm/dd/yyyy for the date"), plus things like edit masks, and if for some reason the JS fails, an exception "catch all" that indicates something like "Please confirm the information you entered is correct"). Maybe hang a few static examples next/under the fields to note the expected format.
Then you don't have to manage field level in two places and if something changes, like you can accept dates in dd/mm/yy, then it's just one change at the client.
Just my $0.02.
[edit]
Alternately, there's always "No Javascript, No Service"