Доброго всем времени суток.
Недавно начал писать скрипт валидатора форм (можно не объяснять, что подобных систем достаточно много в том числе и в составе известных фреймворков). Решил максимально упростить использование этого скрипта в HTML коде.
<form>
<input name="e-mail" Vscript="notnull, email" Vevent="focus, blur, keyup"/><br /><br />
<input name="password" Vscript="notnull, equals(password_confirm:link)" Vevent="focus, blur, keyup"/><br /><br />
<input name="password_confirm" Vscript="notnull, equals(password:link)" Vevent="focus, blur, keyup"/><br /><br />
<input name="somestring" Vscript="notnull, equals(qwe:string)" Vevent="focus, blur, keyup"/><br /><br />
<input name="somestring2" Vscript="notnull, equals(qwe)" Vevent="focus, blur, keyup"/><br /><br />
</form>
Как вы видите, в HTML фрагменте формы представлен вариант языка команд для валидации с возможностью сравнения двух полей межде собой (подходит для полей "пароль" - "подтверждение"), а также сравнение с произвольным строковым значением. Также есть встроенные валидаторы простых типов записей, проверяемые регулярными выражениями (пока реализованы e-mail, notnull). Плюс к этому дополнительный параметр определяет события, при которых будет происходить валидация нужного поля.
Каждое поле ввода может иметь любое количество прикрепленных валидаторов, которые будут храниться в структуре самого поля (obj.validator). По мере заполнения формы, подсчитывается процентное соотношение заполненных верно и неверно полей, что позволит в дальнейшем делать прогресс-бары или фичи из серии "показать - скрыть кнопку сабмита". Есть заделы под более полный синтаксис команд для реализации сложных проверок. Удобное (как мне кажется) расширение системы, то есть создание новых доменов данных.
Пока сам оцениваю скрипт как незавершенный, почему и выкладываю это на общее обсуждение. Интересуют вопросы: насколько хорошо или плохо реализована внутренняя структура программы, насколько это может быть использовано и использовано с удобством, как можно улучшить работу системы, да и вобще - жду любых ваших советов.
Файлы проекта в аттаче. Файлы myLog, extensions и chain - являются второстепенными файлами (в рамках обсуждения). Созданы они для удобства.
Заранее благодарен всем, кому не лень в этом разбираться. Жду ваших рецензий!