nette.ajax.js – několikanásobné odeslání formu
- mirdič
- Člen | 41
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
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
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');