Поскольку форма в «недопустимом» состоянии (поскольку вход внутри формы находится в «недопустимом» состоянии) не будет отправлена.
Срок действия формы создан, чтобы его нельзя было изменить в событиях submit
потому что, как вы заметили, вы не получите новых submit
. Вы должны изменить срок действия формы перед ее отправкой. Обычно валидность формы проверяется индивидуально на каждом входе. Отсюда на ваш вкус. Я бы порекомендовал проверить достоверность каждого ввода на blur
:
$('input[name="myinput"]').on("blur", () => {
// Do your checks and setCustomValidity depending on if is valid or not
});
Таким образом, вы получите событие submit
, только если все входы действительны. Кстати, для того, чтобы это работало, вы должны установить все входы в недопустимое состояние при запуске, чтобы избежать пустых отправок, не касаясь какого-либо ввода.
Другим способом может быть отключение кнопки отправки, если все входы пусты,Для этого вам также потребуется JavaScript и проверка событий change
или input
на всех входах.