Diskuze: jQuery - klik event a if fungující v jednom

JavaScript JavaScript jQuery - klik event a if fungující v jednom

Avatar
Pavel Mareš
Redaktor
Avatar
Pavel Mareš:

Tak vás zdravím,
je to poprvé, co sem píši a doufám že mi zde ctění programátoři i zbytek obecenstva dokáže pomoci. Bohužel jsem se během posledního půl roku doslova a do písmene vyflákl na jQuery a nedokáži vyřešit následující problém.

Mám tlačítko (respektive div), které při kliknutí na něj, spustí "click event" v jQuery kódu. Nicméně je stále aktivní a já bych potřeboval, aby když skript stále běží, tak se při opětovném kliknutí, nespustil skript znovu.

Aby to bylo na 100 % jasné, dám příklad:
Mám stránku, na níž je div. Kliknu na něj a ajax cosi odešle na server a čeká odpověď. Tu dostane a skript jede dál. Nicméně je nutné, aby během provádění skriptu jQuery, čekání na odpověď serveru a následné odpovědi, nebyl spuštěn ten samý skript znovu.

Teoreticky by měl být kód takový, ale jak říkám, nějak to hlavě nemohu dát do kupy, ať se snažím, jak se snažím.

$(document).ready(function() {
    var send = "ano";
    console.log('1 '+ send); // kontrola co se děje, zbytečnost, ale už vážně nevím

    $('.button').click(function() {
        console.log('2 '+ send);

        if(send == "ano") {
            console.log('3 '+ send);
            send = "ne";
            console.log('3.1 '+ send);
        }

        setTimeout( function(){ console.log('4 '+ send); }, 2000); // zpoždění skriptu, jen pro kontrolu
        send = "ano";
    });
});

PS: nadpis vlákna má napovědět, že potřebuji, aby if kontroloval zda skript neběží a klik event, zda bylo kliknuto ...

Odpovědět 16.9.2015 18:36
Nechci být workoholik. Bohužel někdy musíme být tím, čím nechceme.
Avatar
Peas
Člen
Avatar
Peas:

Cauko,

z kodu si nie som uplne isty co si tym chcel povedat, ale na zaklade popisu skusim poradit. Nepomohlo by ti, kebzy si v click funkcii buttonu hned na zaciatku button disablol, napr.:

$('.mojButton').disabled = true

,dalej by sa vykonal ajaxovy call, pricom by mal zadefinovanu Success function, v ktorej by sa dany button opat enablol:

success: function() {
      $('.mojButton').disabled = false;
    }
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět  +2 16.9.2015 19:39
Avatar
Pavel Mareš
Redaktor
Avatar
Odpovídá na Peas
Pavel Mareš:

Jak jsem psal, ono půjde spíš o div, ale chtěl jsem tím říci, že se na to bude klikat. Nicméně si mě přivedl na úžasný nápad, který použiji. Tvořím vlastní stránky a chci něco trochu odlišného, než mají ostatní a toto je pouze část projektu.

Jinak tvé řešení je teoreticky možné, tudíž by bývalo částečně řešilo můj problém, tak máš body za řešení. Díky.

PS: Pokud dnes budu dostatečně nadšen do práce, tak stránky vyhodím na světlo světa někdy okolo 4-5 hodiny ranní :) Pak sem i připíšu, o co se přesně jednalo.

Nahoru Odpovědět  +1 16.9.2015 20:36
Nechci být workoholik. Bohužel někdy musíme být tím, čím nechceme.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.