У меня есть школьное задание, где меня просят создать форму пиццы с HTML и Javascript. Они запрашивают три поля - размер, имя и адрес.
Моя проблема в том, что я не понимаю, как проверить, заполнена ли форма.
Это код, который я написал до сих пор:
function validateForm() {
var errormessage = "";
if (document.getElementById('name').value == "") {
alert (errormessage += 'Please enter your name')
return false;
}
if (document.getElementById('address').value == "") {
alert (errormessage += 'Please enter your address')
return false;
}
}
alert("validations passed");
return true;
}<!DOCTYPE html>
<html>
<head>
<title>Page Title</title>
</head>
<script src = "script2.js"> </script>
<body>
<h3> Pizza Order </h3>
<form id = "pizza-form" onsubmit = "return fullForm()" method = "post">
Full name: <br>
<input type = "text" id = "name">
<br>
Address: <br>
<input type = "text" id = "address">
<br>
Size: <br>
<select name = "Size">
<option value = "Large">Large</option>
<option value = "Medium">Medium</option>
<option value = "Small">Small</option>
</select> <br><br>
<input type = "submit" value = "Order Pizza">
</form>
</body>
</html>Большое Вам спасибо.
Вам действительно не нужно проверять, все ли поля заполнены. Вы проверяете каждое поле ввода, если оно пустое. Это нормально и работает. Поэтому, если какое-то поле пусто, вы выдаете сообщение об ошибке. Это тоже работает. В конце вашей функции вы дадите предупреждение о том, что все в порядке и правильно заполнено. Эта точка достигается только в том случае, если две предыдущие проверки не остановили выполнение функции, потому что какое-то поле ввода не заполнено. Таким образом, если все поля заполнены, предупреждение в конце сообщает пользователю, что форма заполнена правильно. Нет необходимости в дополнительной проверке.
Привет, @Guy Sidon, тебе помог ответ? Если да, не могли бы вы отметить его как принятый? Спасибо



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Таким образом, как вы пытаетесь это сделать, отправка вашей формы вызывает fullForm().
Итак, измените свой javascript на:
function fullForm() {
var errormessage = "";
if (document.getElementById('name').value == "") {
alert (errormessage += 'Please enter your name')
return false;
}
if (document.getElementById('address').value == "") {
alert (errormessage += 'Please enter your address')
return false;
}
alert("validations passed");
return true;
}
Добавьте условие else if с условием else, чтобы отправить действительную форму
Обновленный код:
<form id = "pizza-form" onsubmit = "return validateForm()" method = "post">
ваша функция validateForm():
function validateForm() {
var errormessage = "";
if (document.getElementById('name').value == "") {
alert(errormessage += 'Please enter your name');
return false;
} else if (document.getElementById('address').value == "") {
alert(errormessage += 'Please enter your address')
return false;
} else {
return true;
}
}
function validateForm() {
var errormessage = "";
if (document.getElementById('name').value == "") {
alert(errormessage += 'Please enter your name');
return false;
} else if (document.getElementById('address').value == "") {
alert(errormessage += 'Please enter your address')
return false;
} else {
return true;
}
}<!DOCTYPE html>
<html>
<head>
<title>Page Title
</title>
</head>
<script src = "script2.js"> </script>
<body>
<h3> Pizza Order
</h3>
<form id = "pizza-form" onsubmit = "return validateForm()" method = "post">
Full name:
<br>
<input type = "text" id = "name">
<br>
Address:
<br>
<input type = "text" id = "address">
<br>
Size:
<br>
<select name = "Size">
<option value = "Large">Large
</option>
<option value = "Medium">Medium
</option>
<option value = "Small">Small
</option>
</select>
<br>
<br>
<input type = "submit" value = "Order Pizza">
</form>
</body>
</html>Вы близки к решению. В коде HTML исправьте имя функции onsubmit, а в функции javascript проверьте все значения вместе:
function validateForm()
{
var errorMessage = '';
var nameValue = document.getElementById('name').value;
var addressValue = document.getElementById('address').value;
if (!nameValue)
errorMessage += 'Please enter your name \n';
if (!addressValue)
errorMessage += 'Please enter your address ';
if (errorMessage)
{
alert(errorMessage);
return false;
}
else
{
alert('Name : ' + nameValue + '\n' + 'Address : ' + addressValue);
return true;
}
}<h3> Pizza Order </h3>
<form id = "pizza-form" onsubmit = "return validateForm()">
Full name: <br>
<input type = "text" id = "name">
<br>
Address: <br>
<input type = "text" id = "address">
<br>
Size: <br>
<select name = "Size">
<option value = "Large">Large</option>
<option value = "Medium">Medium</option>
<option value = "Small">Small</option>
</select> <br><br>
<input type = "submit" value = "Order Pizza">
</form>
Оптимизированное решение будет выглядеть следующим образом:
function validateForm() {
const errorTable = ['name', 'address']
const errorMessage = errorTable.map(elem => !!document.getElementById(elem).value ? '' : 'Please enter your ' + elem)
console.info(errorMessage.join('\n'))
return errorMessage.every(elem => elem === '')
}<!DOCTYPE html>
<html>
<head>
<title>Page Title</title>
</head>
<body>
<h3> Pizza Order </h3>
<form id = "pizza-form" onsubmit = "return validateForm()">
Full name: <br>
<input type = "text" id = "name">
<br>
Address: <br>
<input type = "text" id = "address">
<br>
Size: <br>
<select name = "size" id = "size">
<option value = "Large">Large</option>
<option value = "Medium">Medium</option>
<option value = "Small">Small</option>
</select> <br><br>
<input type = "submit" value = "Order Pizza">
</form>
</body>
</html>Вам просто нужно ввести имя функции, которую вы хотите использовать для проверки, в атрибут onsubmit вашего HTML-элемента.
Теперь ваш тег формы выглядит так:
<form id = "pizza-form" onsubmit = "return validateForm()">
full?