Чтобы все элементы снабдить поведением, приходиться складывать весь JS код на общей странице.
И это правильно с точки зрения FrontEnd. Иначе придётся по кусочкам собирать JS код разбросанный там и сям.
Если же вы хотите ООП - это реализуется языком программирования а не языком вёрстки.
Поэтому вам нужен JS отвечающий за своё отображение, а не HTML которому нужен JS.
Вам, возможно, стоит посмотреть в сторону JS библиотек ( и фраймворков) : Angular, Ember, Knockout, Backbone и прочих
Но это хорошее решение вопроса. Для него надо достаточно хорошо знать JS.
Плюс, Использование какой-либо из перечисленных библиотек кажется слишком тяжеловесным для одной лишь формы.