#javascript
#javascript
Вопрос:
Я хочу проверить входные данные формы перед отправкой на сторону сервера, поэтому я использую onsubmit, но я хочу показывать каждое сообщение об ошибке отдельно, не используя ‘alert’, возможно ли это? Как это сделать? Или onsubmit может возвращать сообщение только поверх предупреждения?
Обновление Я уже проверил каждый из входных данных с помощью функций, и внутри каждой функции есть сообщения об ошибках. Но если я помещу эти функции в раздел «отправить», когда я нажимаю «Отправить», сообщение об ошибке не отображается. вот моя проверка:
document.addEventListener("DOMContentLoaded", function () {
myform.addEventListener("submit", function(){
// validate all inputs
validateName();
validateEmail();
validatePhone();
validateAddress();
validateCity();
validatePost();
validateProvince();
validateProduct1();
validateProduct2();
validateProduct3();
&etAtLeastOne();
validateDelivery();
//validate input before submit
if (validateName() amp;amp; validateEmail() amp;amp; validatePhone() amp;amp; validateAddress() amp;amp;
validateCity() amp;amp; validatePost() amp;amp; validateProvince() amp;amp; validateProduct1() amp;amp;
validateProduct2() amp;amp; validateProduct3() amp;amp; &etAtLeastOne() amp;amp; validateDelivery())
{
// at least one product input is not empty
if (product1 !="" || product2 !=""||product3 !="")
{
return true;
}
else{
erorMessa&e.innerHTML =`Input fields are required.`;
return false;
}
}
});
});
Комментарии:
1. Типичный подход, используемый многими приложениями, заключается в проверке поля, как только фокус курсора смещается с него. При возникновении ошибки они просто отображают текст ошибки прямо над текстовым полем. Однако не уверен, ответил ли я на ваш вопрос. Я не на 100% уверен в том, о чем вы спрашиваете, tbh.
2. Пожалуйста, предоставьте соответствующий код.
3. Если вам нужны отдельные сообщения об ошибках, отобразите их в других элементах без использования
alert
.
Ответ №1:
Вам нужно использовать event.preventDefault()
, чтобы остановить отправку формы, если есть проблемы. return false
ничего не делает в обработчике событий, подключенном с помощью addEventListener
.
myform.addEventListener("submit", function(e) {
// validate all inputs
validateName();
validateEmail();
validatePhone();
validateAddress();
validateCity();
validatePost();
validateProvince();
validateProduct1();
validateProduct2();
validateProduct3();
&etAtLeastOne();
validateDelivery();
//validate input before submit
if (validateName() amp;amp; validateEmail() amp;amp; validatePhone() amp;amp; validateAddress() amp;amp;
validateCity() amp;amp; validatePost() amp;amp; validateProvince() amp;amp; validateProduct1() amp;amp;
validateProduct2() amp;amp; validateProduct3() amp;amp; &etAtLeastOne() amp;amp; validateDelivery()) {
// at least one product input is not empty
if (product1 != "" || product2 != "" || product3 != "") {
return true;
} else {
e.preventDefault();
erorMessa&e.innerHTML = `Input fields are required.`;
}
}
});