У такого подхода есть пара минусов
1) Раз нет триггера в виде submit (он задизейблен), то сообщения должны быть на экране сразу
1.1) Ок, если они какие-то серые и не делают из формы одно красное большое пятно, сообщающее пользователю, что он уже дурак и накосячил, что-то не заполнил
(он мог еще даже не начать это делать)
1.2) Если валидаторов будет много, то по каждому валидатору каждого поля нужно подсказку писать прям на экране, что может быть неудобно
2) Если форма в размерах большая, некоторые поля могут не поместиться на экране. Наличие триггера submit может инициировать прокрутку к, например, первому невалидному полю, что куда удобнее, чем если б пользователь самостоятельно искал невалидные поля
2.1) Если у полей есть тултипы, то триггер может у первого невалидного раскрыть тултип, что избавит от необходимости держать сообщения на экране
Я поддерживаю подход с задизейбленным submit только в том случае, если форма совсем маленькая, например, логин-пароль, когда поля вот прям здесь и накосячить можно либо в первом, либо во втором
Если форма больше 5-6 полей, то имхо лучше не дизейблить и сделать нормальную конструкцию с анализом и корректной валидацией полей по нажатию на submit. Пользователи вам спасибо скажут