Autor Zpráva
DeeDeeX
Profil
Zdravim,
mám checkboxy, pro výběr výrobců a pokud se během vteřiny vybere více výrobců, mělo by se odeslat více jejich identifikatoru.
Výběr výrobců funguje, ale když se jich vybere více, proběhne celá funkce vícekrát, což je zbytečné.
Potřebovala bych po zjištění, že bylo opět kliknuto na checkbox ten první požadavek zrušit.


Dá se to?
Našla jsem na tomto serveru diskuzi z roku 2009, kde to zrušit nešlo, ale třeba od té doby se něco změnilo.

Děkuju



jQuery(document).ready(function(){


jQuery(document).delegate('#form_filtr_vyr input:checkbox', "click", function (event) {
         
         var timeout = null;
         var idv="";
         var loc="";
         var url_idvyr="";        

         clearTimeout(timeout);         
         timeout = setTimeout(function() {            

          var checked = new Array();
          jQuery('#form_filtr_vyr input:checkbox').each (
          function ()
          {
              if(jQuery(this).is(":checked"))
                 {
                    idv=jQuery(this).attr('value').split('-')
                    checked.push(idv[0]);
                 }
          });
         alert("checked: "+checked.join("-"));  // tento řádek se spouští dvakrát, pokud vyberu dva výrobce, takže se předchozí operace novou nepřeruší
            var id_vyr=checked.join("-");
            var qs=jQuery('input[name=qs]').attr('value');  //query string
            if (window.location.host == "localhost") {loc="/test"}

               var x = jQuery.ajax({
               url: loc+"/katalog.php?"+qs+url_idvyr,
               type: "GET",
               data:   {},
               error: function (request, status, error) {alert(request.responseText);} ,
               success: function (data) {
                  jQuery('#cont').html(data);                  
             }
            });

      }, 1000);
   });

});
Chamurappi
Profil
Reaguji na DeeDeeXe:
clearTimeout(timeout);
V timeoutu je vždy null — o pár řádků výš ho tam nastavuješ. Pokud chceš zrušit timeout vzniklý při jiném volání té funkce, musíš si jeho číslo uložit v proměnné, která má širší rozsah platnosti, než jen tu funkci.
DeeDeeX
Profil
Dík :-) Už funguje :-) Fakt moc děkuju.

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: