Odeslání formuláře, problém s dvojklikem – Nette v2.0

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

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)

ViPEr*CZ*
Člen | 822
+
0
-

No tak třeba nad to tlačítko (nebo celej form) umístit nějakej div (poloprůhlednej a třeba s preloaderem). Pak na něj nepůjde uživatelsky znova kliknout (odeslat).

Filip Procházka
Moderator | 4668
+
0
-

Ř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)

Prochy
Člen | 91
+
0
-

Tak jsem to nakonec vyřešil následující funkcí snad to není špatné řešení.

  <script>
   var $i=0;
   $("form").submit(function() {
        $i++;
        if($i>1)
         {
          return false;
         }
        setTimeout(function() {
                $i=0;
        }, 5000);

   });
   </script>
kralik
Člen | 230
+
0
-

Ahoj Nettáci,
prosím o pomoc.

Jak bych mohl ošetřit dvojklik na obrázku?
Mám obrázek(tlačítko) s link na handle a potřeboval bych u něj ošetřit dvojklik.

Tak aby se na tlačítko dalo kliknou jen jednou.

mooc díky

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

Nu, a co ti nefunguje? V tomto vlákně je de facto řešení…

kralik
Člen | 230
+
0
-

Prosím, nezlob se.
Neznám Javascript a nevím jak dvojkliku na tagu img mohu díky němu zabránit.

To výše popsané jsem zkoušel, ale nefunguje mi to.

Stále když dvojkliknu na img tak mi proběhne 2× příslušný handle.

Díky

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

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
+
0
-

ano, přesně tak, o <img>

jen mě napadlo jestli stejný problém tady již někdo neřešil.

škoda, jdu hledat jinam

Díky

kralik
Člen | 230
+
0
-

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
+
0
-

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í.