Можно ли при появлении события сабмит на форме, использовать собственный обработчик чтобы произвести валидацию? Прочитал на форумах - вроде как должно отрабатывать. В итоге отрабатывает частично - если форма заполнена верно и произошел сабмит, то вызовется обработчик, который я передал в виде колбэк. Если же форма заполнена неверно и засабмичена, то мой обработчик не вызовется и браузер отработает по своему. Т.е. никаких вариантов добраться до валидации вручную.
Пробовал сие на г**нокоде, который привожу ниже. Как быть, если я всё таки хочу провести валидацию по событию сабмит на форме?
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<form id="form" action="#" method="POST">
<input type="number" min="10">
<button type="submit"></button>
</form>
<script>
var somefun = function () {
console.log('happend');
};
var elementForm = document.querySelector('#form');
elementForm.addEventListener('submit', somefun);
</script>
</body>
</html>
Можно ли при появлении события submit на форме использовать собственный обработчик, чтобы произвести валидацию?
var elementForm = document.querySelector('#form');
// Нужно поймать событие "e"
elementForm.addEventListener('submit', function(e) {
e.preventDefault(); // Остановить форму от посылки на сервер
//------------------------------------------------------------
// Your validation goes here
console.log('happened');
});
<form id="form" action="#" method="POST">
<input type="number" min="10">
<button type="submit">Submit</button>
</form>
Добавьте в <form> атрибут onsubmit = "return formValidation()", а в функции используйте return true; для отправки формы на сервер или return false; для отмены.
function formValidation() {
alert("Валидация формы");
return false;
}
<form id="form" action="#" method="POST" onsubmit="return formValidation()">
<input type="number" min="10">
<button type="submit">Submit</button>
</form>
Для отключения проверки браузером можно воспользоваться атрибутом novalidate на форме
var somefun = function() {
console.log('happend');
};
var elementForm = document.querySelector('#form');
elementForm.addEventListener('submit', somefun);
<form id="form" action="#" method="POST" novalidate>
<input type="number" min="10">
<button type="submit">btn</button>
</form>
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости