nette.ajax.js – několikanásobné odeslání formu

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
mirdič
Člen | 41
+
0
-

Zdravím,

odesílám formuláře pomocí ajaxu přes nette.ajax.js a narazil jsem na problém, že pokud uživatel klikne vícekrát na submit, tak se form odešle tolikrát, kolikrát uživatel klikne.

Například pokud přidává komentář a klikne 2× na submit, tak se komentář se do databáze uloží dvakrát.

Napadá mne jediní řešení a to, po prvním kliku na submit, provést .unbind(‚submit‘), ale to mi nepřijde moc elegantní.

Řešil někdo podobný problém, případně poradí prosím někdo best practises?

hitzoR
Člen | 51
+
0
-

O jaký form přesně jde? Respektive co se děje po tom, co se odešle?
Chápu dobře, že než se stihne vyhodnotit první odeslání a než dojde k nějakému redirectu nebo redrawu, který by form „smazal“ nebo zneaktivnil, tak uživatel stihne zmáčknout sumbit tlačítko znovu?
Jinak než přes nějaký unbind bych tomu tlačítku jednoduše přidal atribut disabled, případně vedle něho i nějaké processing kolečko, aby uživatel veděl, že se zrovna něco děje, ale tady vážně záleží na použití toho formu. :)

mirdič
Člen | 41
+
0
-

Jsou to formy v celé aplikaci, které odesílám přes ajax. Je to tak, že než se stihne provést redirect, tak uživatel zadá nový subrequest.

Díky za pomoc, zatím jsem to vyřešil takto:

Při odeslání formu

	$('input[type="submit"]').attr('disabled', 'disabled');

a po skončení ajaxu

$('input[type="submit"]').removeAttr('disabled');