Я хотел сделать то же самое, это можно сделать, но это сложно. Что вы можете сделать, это создать надежные методы проверки на стороне сервера, которые вы вызываете с помощью Ajax удаленно. Если JavaScript не включен, вы просто используете обычные методы проверки на стороне сервера без удаленных вызовов. Таким образом, у вас будет только одна кодовая база для проверки.
Однако проблема в том, что проверка вашего клиента будет намного медленнее, поскольку он постоянно должен взаимодействовать с серверной частью. Еще большая проблема заключается в том, что вы не сможете использовать некоторые мощные клиентские библиотеки проверки, поскольку все они предполагают, что проверка выполняется на клиенте, а не удаленно.
Я просто разочаровался в достижении этого. Мне пришлось дублировать мою логику проверки и сообщение об ошибке на клиенте и сервере. Это не идеально, но лучше всего подходит для пользователей, и вы сможете использовать великолепные интерфейсные библиотеки.