Pokud potřebujeme vyvolávat submit událost vnořeného formuláře a zároveň omezit odeslání vnějšího, tak musíme použít následující postup.
Pro názornost máme následující příklad:
<form id="frm"> <!-- nějaké formulářové pole --> <!-- kus HTML --> <!-- následuje INPUT, který se odesílá pomocí AJAXu, jak na click, tak na klávesu enter --> <input name="zprava" id="zprava" type="text" /> <input type="button" id="sb_submit" value="Odeslat" /> <!-- kus HTML --> </form> |
A pomocí následujícího JavaScriptu docílíme kýžené funkcionality.
$(function() { var enter = false; // pomocná proměnná $('#frm').submit(function(e) { if (enter) { // pokud byl stisknut enter v poli, které nesouvisí s hlavním formulářem (viz nastavení níže) ... enter = false; // ... proměnou vynulujeme pro další použití ... return false; // ... tak odeslání vnějšího formuláře neprovádíme } }); // odeslání na stisk klávesy enter $('#zprava').keydown(function(e) { if (e.keyCode == 13) { // došlo ke zmáčknutí klávesy enter enter = true; // nastavíme pomocnou proměnou na TRUE send(); // odešleme data } }); // odeslání na událost onClick $('#sb_submit').click(function(e) { send(); }); }); |