NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

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

V předchozím kvízu, Online test znalostí JavaScript, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Pavel Mareš
Tvůrce
Avatar
Pavel Mareš:16.9.2015 18:36

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
Však ono půjde ...
Avatar
Peas
Člen
Avatar
Peas:16.9.2015 19:39

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í
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
16.9.2015 19:39
Avatar
Pavel Mareš
Tvůrce
Avatar
Odpovídá na Peas
Pavel Mareš:16.9.2015 20:36

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
16.9.2015 20:36
Však ono půjde ...
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.