Autor Zpráva
Celebi
Profil
Zdravím,
chtěl jsem pomocí javascriptu udělat obranu proti opakovanému odesílání formuláře. Ovšem řešení, které jsem použil:
<input type="submit" value="Text" onClick="this.disabled=true;">
má tu vadu, že se sice button nastaví jako disabled, ale formulář se vůbec neodešle. (Bez kódu v onClicku se odesílá v pořádku.) Chtěl bych se zeptat, jestli existuje nějaké jednoduché řešení, jak to udělat, aby se tlačítko nastavilo na disabled po kliknutí, ale zároveň se formulář odeslal?
Předem děkuji za odpověď.
Joker
Profil
Celebi:
Jestli odeslání formuláře řídí nějaký JavaScript, dejte to nastavení disabled do něj.
Jestli odeslání formuláře žádný JavaScript neřídí, nemá cenu to dělat, protože se stejně načte nová stránka.
Celebi
Profil
Joker:
Jestli odeslání formuláře řídí nějaký JavaScript, dejte to nastavení disabled do něj.
Jestli odeslání formuláře žádný JavaScript neřídí, nemá cenu to dělat, protože se stejně načte nová stránka.
Javascript odesílání formuláře nijak neřídí (pak se zpracovává PHP kód), ale jde mi o to, abych zabránil tomu, aby někdo odeslal formulář vícekrát, což vzhledem k tomu, že pak pracuji s daty v databázi a pod., může zabránit zbytečným chybám. Občas chvíli trvá než se stránka odešle a není těžké omylem odeslat formulář vícekrát.
peta
Profil
Nedavej input type=submit udalost onclick, pouzij form onsubmit.
Kdyz formular disablujes pred odeslanim, pak se logicky neodesle.
Kdyz formular odesles, tak se udalost kliku ztrati, protoze se stranka nacte znovu, resetuje. Muzes php rici, at formular disabluje. Nebo si nastavit cookies.
Muzes pomoci js zkopirovat formular do skryteho iframe a odeslat. Nebo pomoci js ajaxu. Nebo formular zrovna udelat v iframe A pak muzes kliknuti sledovat zvenci.

"Občas chvíli trvá než se stránka odešle" - to je ovsem problem programatora / serveru. Zda se ti, ze tady na foru to trva dlouho, nez odesle reakci? A jiste sem chodi vic lidi nez k tobe. A nejspis to take nebezi na nejrychlejsim serveru.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0