Посмотрите на реализацию обработки ошибок в Yii — получается весьма компактно и удобно.
Да и в большинстве фреймворков наверно более-менее удобная обработка вводных данных.
Мой вариант решения — декларировать все ограничения на параметры внутри шаблона, после чего конвертировать шаблон в шаблон+код валидации (JS будет получен автоматически).
По различным обстоятельствам забросил код весной (впрочем он уже вполне юзабелен, проблемы с документацией и полной поддержкой всех видов полей на форме), сейчас возвращаюсь к нему github.com/tz-lom/TrustedForms
Не все ограничения могут быть корректно описаны внутри шаблона.
В любой другой форме могут возникнуть ошибки, которые можно обработать только на стороне сервера, например та же самая проверка captha или реализация специфической логики.
На стороне клиента уже можно использовать HTML5.
На стороне сервера, если используется адекватный фреймворк, в нём обязательно есть встроенные средства для валидации и фильтрации.
> А как же обратная совместимость?
1. Зависит от целевой аудитории.
2. Зависит от поставленных целей.
3. Эта тема для холивара.
Про сторону клиента, html5 обратную совместимость адекватно поддерживает, ибо если браузер древний (даже IE активно наращивает поддержку html5), то он просто отобразит всё обычными средствами, без подсказок. Проверка на стороне сервера всё равно не даст ввести ерунду, или не вводить ничего.
Т.е. фактически, Вы ничего не теряете, но если браузер адекватный, то получаете эффективность, которую трудно переоценить.
Обработка заполняемой пользователем формы: как уменьшить сложность кода?