Odeslání formuláře, problém s dvojklikem – Nette v2.0
- Prochy
- Člen | 91
Zdravim,
chtěl jsem se zeptat, jak řešíte problém s vícenásobným klinutím na
tlačítko? Zkoušel jsem skript:
$("form").submit(function() {
var el = $(this).find(":submit, :image");
el.attr("disabled", "disabled");
setTimeout(function() {
el.attr("disabled", "");
}, 5000);
});
Ale bohužel se nezavolá callback, který je přiřazen tomu tlačítku.
Počítám s tím, že chyba je v tom, že při odeslání má tlačítko
hodnotu disable, takže se nezavolá daná funkce.
Tak by mě zajímalo, jak to máte ošetřený vy.
Děkuji za odpověď
Edit: Teď mě napadlo, že po kliknutí na tlačítko, bude mít událost
submit return false
A tím vlastně formulář nebude reagovat, ale bohužel nemám až takové znalosti z javascriptu, abych takový kód vytvořil.
Editoval Prochy (1. 5. 2012 11:19)
- Filip Procházka
- Moderator | 4668
Řekl bych, že takto nějak to bude lepší
<script>
$('body').on('submit', 'form', function (e) {
var el = $(e.target);
el.attr('disabled', true);
setTimeout(function() { el.removeAttr("disabled"); }, 5000);
});
Editoval HosipLan (1. 5. 2012 13:10)
- Vojtěch Dobeš
- Gold Partner | 1316
Ahá… tobě jde přímo o klik na elementu <img>
? Tak
to bude trošku jinak, omlouvám se. Nicméně, s takovouto otázkou bys měl
jít na fórum diskuse.jakpsatweb.cz, toto je fórum o Nette. Problém,
který řešíš, je prakticky na Nette zcela nezávislý…
- kralik
- Člen | 230
Ahoj,
tak řešení jsem našel.
Třeba to někomu pomůže.
Řešeno nad tagem <a> přes jQuery.
odkaz na GIT
<script>
function do_nothing() {
return false;
}
// prevent a second click for 5 seconds. :)
$('.disDbc').live('click', function(e) {
$(e.target).click(do_nothing);
setTimeout(function(){
$(e.target).unbind('click', do_nothing);
}, 5000);
});
</script>
A do tagu <a>
<?php
<a class="disDbc" n:href=.... >DbC</a>
?>
- Siam
- Člen | 54
Bohužel mi výše zmíněné scripty (a ani jiné co jsem našel zde na fóru) nefungují a dvojklikem se pořád odesílají příspěvky dvakrát. Podařilo se někomu přijít na řešení? Napadlo mě při zápisu do db vždycky kontrolovat, jestli dejme tomu tři poslední záznamy neobsahují ty samé vyplněné údaje a pokud jo, tak zápis neprovést. Ideální to ale asi moc není.