Ondřej Šteigl - Logo ONDŘEJ ŠTEIGL
JavaScript

Kontrola formuláře v JavaScriptu před odesláním

Ověříme, že pole nejsou prázdná a e-mail vypadá správně, ještě než návštěvník formulář odešle.

Čtení 7 min začátečník Naposledy upraveno 2. 11. 2026

Předtím: Seznamy v JavaScriptu: pole a cykly

V návodu o formulářích v HTML jsme postavili formulář. Teď ho doplníme o kontrolu, která běží přímo v prohlížeči. Návštěvník hned vidí, co je špatně, a nemusí čekat na odpověď serveru.

Formulář s identifikátorem

<form id="kontakt" action="/odeslat.php" method="post">
  <input type="text" id="jmeno" name="jmeno" required>
  <input type="email" id="email" name="email" required>
  <p id="chyba"></p>
  <button type="submit">Odeslat</button>
</form>

JavaScript potřebuje najít formulář a jeho pole. K tomu slouží atribut id, který jsme použili u formuláře i u chybového odstavce.

Zachycení odeslání

const form = document.getElementById("kontakt");
const chyba = document.getElementById("chyba");

form.addEventListener("submit", function (event) {
  // ... kontrola ...
});

Událost submit nastane ve chvíli, kdy návštěvník formulář odešle. Pomocí event.preventDefault() odeslání zastavíme, dokud nejsou data v pořádku.

Samotná kontrola

form.addEventListener("submit", function (event) {
  const jmeno = document.getElementById("jmeno").value.trim();
  const email = document.getElementById("email").value.trim();

  if (jmeno === "") {
    event.preventDefault();
    chyba.textContent = "Vyplňte prosím jméno.";
    return;
  }
  if (email.indexOf("@") === -1) {
    event.preventDefault();
    chyba.textContent = "E-mail musí obsahovat zavináč.";
    return;
  }
  chyba.textContent = "";
});

Metoda trim() odstraní mezery na začátku a na konci, takže pole s jedinou mezerou se nepovažuje za vyplněné. Podmínka if rozhoduje, zda se odeslání zastaví. Kontrola indexOf("@") je jednoduchá a na úvod stačí. Přesnou kontrolu e-mailu ale děláme na serveru.

💡 Tip: Kontrolu v prohlížeči nelze brát jako ochranu. Uživatel může JavaScript vypnout nebo data poslat jinak, takže data vždy ověřte i na serveru v PHP.

Časté chyby

Teď umíte ohlídat, co návštěvník do formuláře napíše, a upozornit ho dřív, než data odejdou. Dál můžete pokračovat s PHP, kde se data přijmou a uloží. 👍

Všechny návody

Nechcete web řešit sami a chcete ho mít hotový a profesionální?

Podívejte se na tvorbu webů →

© Ondřej Šteigl. Návody vznikají ve spolupráci s Claude (AI) a jsou upravovány autorem. Autorská práva k vlastním úpravám a příkladům náleží Ondřeji Šteiglovi. Kopírování nebo šíření celých textů bez písemného souhlasu je zakázáno. Výukové použití je vítáno, uveďte prosím zdroj (osteigl.cz).

← Zpět na všechny návody

Nezmeškejte nový návod

Když vyjde nový návod, pošleme vám krátký e-mail. Žádný spam, odhlásit se jde jedním klikem.

QR platba – dobrovolný příspěvek

☕ Byl návod užitečný?

Můžete mě podpořit dobrovolným příspěvkem – nepovinně, třeba stovkou na provoz a na kafe. Načtěte QR v bankovní aplikaci, nebo pošlete na účet 6048546800/6363. Díky!