vasil77, как вариант можно использовать этот компромисс в качестве фоллбека, а для хромиумов (коих большинство) написать стили с шейпами через @supports.
Заказчику показывать сайт в хроме =))
Посторонним В., Вы не поняли. Никакого трюка не надо.
Сначала происходит HTML5 валидация, потом сабмит формы.
Если вы отслеживаете событие submit на форме, то у вас HTML5 валидация сначала отработает. Если валидация не прошла, сабмита не будет.
Если вы ловите клик на кнопке, то к отправке формы это отношения не имеет, потому что вы глушите это событие. а раз нет отправки, то нет и валидации. Кроме того клик не сработает при отправке формы клавишей Энтер.
а если какой-то класс добавляется скриптом, да еще его имя генерируется им же?
let b = 'cls';
.classList.add(b+'_mod');
В разметке нигде нет класса .cls_mod, в скриптах его имя тоже не упоминается. Любой автоинструмент посчитает этот класс неиспользуемым и удалит из таблицы стилей. А он нужен. Будет весело, обещаю =)
В том и вопрос — как понять что "сервер не отвечает".