Zamezní propagace submitu odeslání vnořeného formuláře

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();
	});
});

Napsat komentář

Vaše emailová adresa nebude zveřejněna.