shiromode, я думаю что это можно решить и так, надо пробовать по всякому.
можно и js применить при необходимости. но в целом зачем оно? и так нормально, оперируйте лучше входящими значениями
а чем вам не подходит один общий компонент для всех типов ввода?
так и проще, и повторяемого кода меньше. если у вас логика в этом русле сильно разрастется, то можно и поделить.
а можно/нельзя - вам уже говорили: можно как угодно.
то, как вы сделали сейчас плохого за собой ничего не несет. разве что, это немного неудобно.
можно и js применить при необходимости. но в целом зачем оно? и так нормально, оперируйте лучше входящими значениями