Вешаешь обработчик на событие sumbit.
Добавляешь evt.preventDefault(), чтобы остановить отправку формы.
Делаешь валидацию и оповещение пользователя (как пример alert).
Отправляешь формы через js (this.submit()).
const form = document.querySelector('#form');
const email = document.querySelector('#email');
const name = document.querySelector('#name');
form.addEventListener('submit', function(evt) {
evt.preventDefault();
if(!name.value) {
alert('Поле имя не заполнено');
return;
}
if(!email.value) {
alert('Поле email не заполнено');
return;
}
this.submit();
});