Událost submit se spustÃ, když je formuláŠodeslán. Obvykle se použÃvá ke kontrole formuláÅe pÅed jeho odeslánÃm na server nebo ke zruÅ¡enà odeslánà a zpracovánà formuláÅe v JavaScriptu.
Metoda formuláÅ.submit() umožÅuje vyvolat odeslánà formuláÅe z JavaScriptu. Můžeme ji použÃt k dynamickému vytvoÅenà a odeslánà naÅ¡ich vlastnÃch formuláÅů na server.
PodÃvejme se na nÄ podrobnÄji.
Událost submit
FormuláŠlze odeslat dvÄma hlavnÃmi způsoby:
- PrvnÃm je kliknutà na
<input type="submit">nebo<input type="image">. - Druhým je stisknutà Enter na vstupnÃm poli.
ObÄ akce vyvolajà na formuláÅi událost submit. Handler může zkontrolovat data, a pokud v nich jsou chyby, zobrazit je a zavolat událost.preventDefault(), aby formuláŠnebyl odeslán na server.
V následujÃcÃm formuláÅi:
- Vstupte do textového pole a stisknÄte Enter.
- KliknÄte na
<input type="submit">.
ObÄ akce zobrazà alert a v důsledku return false nebude formuláŠnikam odeslán:
<form onsubmit="alert('odeslat!');return false">
Prvnà způsob: klávesa Enter ve vstupnÃm poli <input type="text" value="text"><br>
Druhý způsob: kliknÄte na "odeslat": <input type="submit" value="Odeslat">
</form>
submit a clickKdyž je formuláŠodeslán stisknutÃm Enter na vstupnÃm poli, spustà se událost click na <input type="submit">.
To je docela veselé, protože k žádnému kliknutà nedošlo.
Zde je demo:
<form onsubmit="return false">
<input type="text" size="30" value="Vstupte sem a stisknÄte Enter">
<input type="submit" value="Odeslat" onclick="alert('click')">
</form>
Metoda submit
Chceme-li odeslat formuláŠna server ruÄnÄ, můžeme zavolat formuláÅ.submit().
Pak událost submit nebude vygenerována. PÅedpokládá se, že když programátor volá formuláÅ.submit(), skript již zpracoval vÅ¡echno, co bylo potÅeba.
Tato metoda se nÄkdy použÃvá k ruÄnÃmu vytvoÅenà a odeslánà formuláÅe, napÅÃklad:
let formuláŠ= document.createElement('form');
formuláÅ.action = 'https://google.com/search';
formuláÅ.method = 'GET';
formuláÅ.innerHTML = '<input name="q" value="test">';
// formuláŠmusà být v dokumentu, abychom jej mohli odeslat
document.body.append(formuláÅ);
formuláÅ.submit();
KomentáÅe
<code>, pro nÄkolik Åádků je obalte znaÄkou<pre>, pro vÃce než 10 Åádků vložte odkaz na pÃskoviÅ¡tÄ (plnkr, jsbin, codepenâ¦)