Przy takim zapisie bloków if, elseif, po naciśnięciu na przycisk "wyślij" wykonywany jest tylko pierwszy napotkany blok, który spełnia warunek (walidacja całego formularza przebiega po kilku krotnej próbie wysłania formularza - naciśnięcia "wyślij" w zależności od tego ile pól użytkownik wypełnił nieprawidłowo)
if( . . . )
{
. . .
}
else if ( . . . )
{
. . .
}
else if ( . . .) itd.
proponuję walidację wszystkich pól, już przy pierwszej próbie wysłania formularza. Codepen
<div class="blad" id="blad"></div>
<div class="content">
<h3>Formularz zamówienia</h3>
<form action="zamowienie.html" method="get" name="zamówienie" id="zamowienie">
<ul>
<li>
<label>Nazwa produktu :</label>
<div><input name="produkt" type="text" id="produkt"/></div>
</li>
<li>
<label>Ilość :</label>
<div><input name="ilosc" type="text" id="ilosc"/></div>
</li>
<li>
<label>Imię :</label>
<div><input name="imie" type="text" id="imie"/></div>
</li>
<li>
<label>Nazwisko :</label>
<div><input name="nazwisko" type="text" id="nazwisko"/></div>
</li>
<li>
<label>Email :</label>
<div><input name="email" type="text" id="email"/></div>
</li>
<li>
<label>Adres :</label>
<div><textarea name="adres" cols="12" rows="4" id="adres"></textarea></div>
</li>
<li>
<label>Akceptuję regulamin :</label>
<div><input name="regulamin" type="checkbox" id="regulamin"/></div>
</li>
</ul>
<div class="wyslij"><input name="wyslij" type="submit" value="Wyślij" id="wyslij"/></div>
</form>
</div>
function sprawdz()
{
document.getElementById("zamowienie").onsubmit = function()
{
let form_error = [];
if (produkt.value == "") {
form_error.push("Uzupełnij nazwe produktu");
}
if (ilosc.value == "") {
form_error.push("Uzupełnij ilość");
} else {
if (parseFloat(ilosc.value) != ilosc.value) {
form_error.push("Wartość w polu ilość powinna być liczbą");
} else {
if (ilosc.value <= 0) {
form_error.push("Wartość w polu ilość powinna być większa od zera");
}
}
}
if (imie.value == "") {
form_error.push("Uzupełnij imię");
} else {
if (imie.value.charAt(0).toUpperCase() != imie.value.charAt(0)) {
form_error.push("Imię powinno zaczynać się od dużej litery");
}
}
if (nazwisko.value == "") {
form_error.push("Uzupełnij nazwisko");
} else {
if (nazwisko.value.charAt(0).toUpperCase() != nazwisko.value.charAt(0)) {
form_error.push("Nazwisko powinno zaczynać się od dużej litery");
}
}
if (email.value == "") {
form_error.push("Uzupełnij email");
} else {
if (!email.value.includes('@')) {
form_error.push("Nieprawidłowy format email");
}
}
if (adres.value == "") {
form_error.push("Uzupełnij adres");
}
if (regulamin.checked == false) {
form_error.push("Zaznacz akceptację regulaminu");
}
if (form_error.length > 0) {
blad.innerHTML = form_error.join("<br>");
return false;
} else {
return true;
}
}
}
window.onload = function()
{
sprawdz();
}
W przypadku np.: sprawdzenia adresu email, lepiej się sprawdza, input type="email" i (lub) regexp, ale nie napisałeś czy w zadaniu można ich użyć. Analogicznie dla liczb (input type="number").