Viditelnost po zatržení checkboxu – JavaScript, AJAX, jQuery – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Viditelnost po zatržení checkboxu – JavaScript, AJAX, jQuery – Fórum – Programujte.comViditelnost po zatržení checkboxu – JavaScript, AJAX, jQuery – Fórum – Programujte.com

 

Pavel
~ Anonymní uživatel
383 příspěvků
17. 2. 2022   #1
-
0
-

Přátelé, měl bych k vám prosbu. Jsem téměř absolutní laik, co se programování týče a právě proto bych potřeboval poradit. Máme na shopu novou template a zjistili jsme, že při použití filtrů produktů nám to nefunguje přesně jak by mělo. Jde o to, že pokud rozbalíme filtrování (pokročilé filtry), zobrazí se vše, jak má. Je tam filtrování podle značky a jiných parametrů. Problém je v tom, že po kliknutí na nějaký checkbox se filtry opět sbalí a musí se znovu otevřít. Vyjímku tvoří pouze filtrování podle značky (kde zůstane rám filtrů pořád otevřený a lze dále filtrovat. Pokud ale otevřete filtry, a jako první nekliknete na nějaký filtr podle značky, ale jiný filtr, tak to zmizí a musí se to otevřít. Trochu jsem se v tom šťoural:-) a zjistil jsem podle kódu, že tu viditelnost u značky způsobuje toto. 

  function showHideFiltr(){
      $("#manufacturer-filter input[type='checkbox']").change(function() {
          //po kliknuti na znacku se ulozi pocet zakliknutych
          lbKdFilterManufacturer = $("#manufacturer-filter input[type='checkbox']:checked").length;         
      });

tohle když zakomentuju, mizí i filtr značek. Jak ale donutit celé filtry, aby zůstaly aktivně otevřené stále? Moc děkuji za rady a omlouvám se za neznalost. Jinak tady je celý kód, který to ovládá.

  var lbKdFilterManufacturer = 0;

  function showHideFiltr(){
      $("#manufacturer-filter input[type='checkbox']").change(function() {
          //po kliknuti na znacku se ulozi pocet zakliknutych
          lbKdFilterManufacturer = $("#manufacturer-filter input[type='checkbox']:checked").length;         
      });
  
      $("#filterActivator").click(function(){
          if($('#category-filter-hover').is(':visible')) {
              hideFilter();       
          } else {
              //zobrazit s animaci
              showFilter(150);    
          }
      });
  }
  
  function showFilter(animationLength){
      $('#category-filter-hover').show(animationLength);
      $("#filterActivator").html(function(index, text) {
          return text.replace("Pokročilé filtry", "Zavřít filtr");
      });
  }
  
  function hideFilter(){
      $('#category-filter-hover').hide(350);
      $("#filterActivator").html(function(index, text) {
          return text.replace("Zavřít filtr", "Pokročilé filtry");
      });  
  }

  $(document).ready(function(){
      $(".type-category .sidebar .box-filters, .type-manufacturer-detail .sidebar .box-filters").insertBefore($("#category-header"));
      $(".type-category #content #filters, .type-manufacturer-detail #content #filters").insertBefore($("#category-header"));
      $(".type-category #content #filters").append('<span class="btn" id="filterActivator">Pokročilé filtry</span>');
      $('.param-filter-top label[for="stock"]').html(function(index, text) {
        return text.replace("Na skladě", "Skladem");
      });
      showHideFiltr();
      
      insertControlsAdvancedOrder();

      var windowWidth = $(window).width();
      if(windowWidth < 768) {
          $("#content > .filters-wrapper a.btn[data-unveil='filters']").insertBefore($("#category-header"));
      }
      
      document.addEventListener("ShoptetDOMPageContentLoaded", function() {
          lbKdAjaxComplete();      
      });
    
      document.addEventListener("ShoptetDOMPageMoreProductsLoaded", function() {
          lbKdAjaxComplete();     
      });
  });
  
  function insertControlsAdvancedOrder(){
      document.addEventListener("ShoptetDOMAdvancedOrderLoaded", function () {
          var continueButton = $('<button type="button" class="btn btn-primary lbKdELiquidContinue">Pokračovat v nákupu</button>');    
          $("#colorbox .advanced-order .extra.step").prepend(continueButton); 
          
          /*
          $.colorbox.resize({
            width : $('.content-wrapper').width(),
          }); 
          */                   
          
          $(".lbKdELiquidContinue").click(function() {   
              $.colorbox.close();                                                                                
          });     
       });
    }
  
  function lbKdAjaxComplete(){
      $(".type-category .sidebar .box-filters, .type-manufacturer-detail .sidebar .box-filters").insertBefore($("#category-header"));
      $(".type-category #content #filters, .type-manufacturer-detail #content #filters").insertBefore($("#category-header"));
      $('.param-filter-top label[for="stock"]').html(function(index, text) {
        return text.replace("Na skladě", "Skladem");
      });
      if(!$("#filterActivator").length){
          $(".type-category #content #filters").append('<span class="btn" id="filterActivator">Pokročilé filtry</span>');
          //znovu zaregistrovat listener
          showHideFiltr();
          //kontrola poctu oznacenych znacek 
          if(lbKdFilterManufacturer > 0){
              //zobrazit bez animace 
              showFilter(0);  
          }           
      }

      var windowWidth = $(window).width();
      if(windowWidth < 768) {
          $("#content > .filters-wrapper a.btn[data-unveil='filters']").insertBefore($("#filters"));
      }
  }

Nahlásit jako SPAM
IP: 2a02:768:b53d:516a:b4be:a3af:74cc:d196...–
peter
~ Anonymní uživatel
4016 příspěvků
17. 2. 2022   #2
-
0
-

   

   if(lbKdFilterManufacturer > 0){

kdyz je to CISLO>0 (lbKdFilterManufacturer > 0), tak to spousti nejake showFilter(0), tak, to bud tu podminku smazat nebo nastavit pro vsechny, ne?
Jestli tomu spravne rozumim, kdyz neni nic zasktnute ve znackach, tak se znacky take zavrou. Nebo naopak zustanou otevrene. 0 by mela znamenat, ze animace potrva 0 ms, cili ihned. Ty filtry se tedy nejspis take zavrou a pak znova otevrou.
Ta funkce, kterou jsi zakomentoval, ta dela jen to, ze do CISLO ulozi pocet zaskrtnutych.
Dalo by se s tim udelat vic veci, ale netusim s cim je ta promena jeste provazana, takze nejlepsi bude asi ty 3 radky zakomentovat a pripsat pod ne showFilter(0)

Nahlásit jako SPAM
IP: 2001:718:2601:258:c5fd:f149:a259:bd10...–
peter
~ Anonymní uživatel
4016 příspěvků
17. 2. 2022   #3
-
0
-

kdybys jako nevedel, komentar se dela dvema lomitky 

//          if(lbKdFilterManufacturer > 0){
//              //zobrazit bez animace ---- tady to primo mas, ze zobrazit bez animace
//              showFilter(0);  
//          }   
              showFilter(0);  
Nahlásit jako SPAM
IP: 2001:718:2601:258:c5fd:f149:a259:bd10...–
Pavel
~ Anonymní uživatel
383 příspěvků
17. 2. 2022   #4
-
0
-

#3 peter
Díky za ochotu, ten show filter dělá jen animaci, to nesouvisí s tím, co jsem psal, ale chápu, že jsem to nejspíše špatně napsal. Každopádně nakonec pomohlo, když jsem úvodní část var lbKdFilterManufacturer = 0; změnl na var lbKdFilterManufacturer = 1; , teď to funguje jak má. Každopádně ještě jednou moc díky za čas a ochotu!

Nahlásit jako SPAM
IP: 2a02:768:b53d:516a:ac1c:649f:343f:8885...–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 17 hostů

Podobná vlákna

Viditelnost proměnné — založil Nefaritus

Uzamknutí checkBoxu — založil Tase

Kontrola Checkboxu... — založil buenek

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý