Autor | Zpráva | ||
---|---|---|---|
pajadvorak Profil |
#1 · Zasláno: 8. 3. 2021, 19:41:44
Mám níže uvedený dotaz do databáze do dvou tabulek. Bohužel se mi nedaří odfiltrovat položky dle tohoto filtru
((tabulka_zbozi_vlastnosti.tabulka_vlastnost = 'EF000187' AND tabulka_zbozi_vlastnosti.hodnota = 'AC') OR (tabulka_zbozi_vlastnosti.tabulka_vlastnost = 'EF009556' AND tabulka_zbozi_vlastnosti.hodnota = '6'))
Namísto, aby se odfiltrovali, tak se zobrazí všechny. Chápu, že to dělá "OR". Ale když dám "AND", tak databáze vrátí nulový výsledek. Potřebuji, aby filtr fungoval tak, že zobrazí položky, které splní tabulka_zbozi_vlastnosti.tabulka_vlastnost = 'EF000187' = tabulka_zbozi_vlastnosti.hodnota = 'AC' a zároveň (tabulka_zbozi_vlastnosti.tabulka_vlastnost = 'EF009556' = tabulka_zbozi_vlastnosti.hodnota = '6' Pro vysvětlenou: tabulka_zbozi_vlastnosti obsahuje seznam položek a k nim přiřazené vlastnosti + hodnoty. Takže jedna položka tam je například uvedena 10x, protože má 10 vlastností. Děkuji moc za pomoc. SELECT etim_zbozi.id, tabulka_zbozi.kod,tabulka_zbozi.kod_vyrobce, tabulka_zbozi.kod_dodavatele, tabulka_zbozi.nazev, tabulka_zbozi.cena, tabulka_zbozi.cena_doporucena, tabulka_zbozi.popis, tabulka_zbozi.dostupnost FROM tabulka_zbozi JOIN tabulka_zbozi_vlastnosti on tabulka_zbozi.kod = tabulka_zbozi_vlastnosti.kod_zbozi WHERE ((tabulka_zbozi.kod = 'EH1054350') OR (tabulka_zbozi.kod = 'EH1714832') OR (tabulka_zbozi.kod = 'EH1715136') OR (tabulka_zbozi.kod = 'EH1749823') OR (tabulka_zbozi.kod = 'EH1749824') OR (tabulka_zbozi.kod = 'EH1799946') OR (tabulka_zbozi.kod = 'EH2017500') OR (tabulka_zbozi.kod = 'EH2028068') OR (tabulka_zbozi.kod = 'EH2028069') OR (tabulka_zbozi.kod = 'EH2029337') OR (tabulka_zbozi.kod = 'EH2029338') OR (tabulka_zbozi.kod = 'EH2029339') OR (tabulka_zbozi.kod = 'EH2029340') OR (tabulka_zbozi.kod = 'EH2030875') OR (tabulka_zbozi.kod = 'EH2032241') OR (tabulka_zbozi.kod = 'EH2500907') OR (tabulka_zbozi.kod = 'EH2503340') OR (tabulka_zbozi.kod = 'EH2508120') OR (tabulka_zbozi.kod = 'EH3007240') OR (tabulka_zbozi.kod = 'EH3020463') OR (tabulka_zbozi.kod = 'EH3020468') OR (tabulka_zbozi.kod = 'EH3020469') OR (tabulka_zbozi.kod = 'EH3020824') OR (tabulka_zbozi.kod = 'EH3023733') OR (tabulka_zbozi.kod = 'EH3025948') OR (tabulka_zbozi.kod = 'EH3026426') OR (tabulka_zbozi.kod = 'EH3026713') OR (tabulka_zbozi.kod = 'EH3027004') OR (tabulka_zbozi.kod = 'EH3027006') OR (tabulka_zbozi.kod = 'EH3027007') OR (tabulka_zbozi.kod = 'EH3027353') OR (tabulka_zbozi.kod = 'EH3034496') OR (tabulka_zbozi.kod = 'EH4000446') OR (tabulka_zbozi.kod = 'EH4000454') OR (tabulka_zbozi.kod = 'EH4008501') OR (tabulka_zbozi.kod = 'EH4019315') OR (tabulka_zbozi.kod = 'EH4019420') OR (tabulka_zbozi.kod = 'EH4019973') OR (tabulka_zbozi.kod = 'EH5000325') OR (tabulka_zbozi.kod = 'EH5007844') OR (tabulka_zbozi.kod = 'EH5008621') OR (tabulka_zbozi.kod = 'EH5008622') OR (tabulka_zbozi.kod = 'EH5008623') OR (tabulka_zbozi.kod = 'EH5008624') OR (tabulka_zbozi.kod = 'EH5009114') OR (tabulka_zbozi.kod = 'EH5009658') OR (tabulka_zbozi.kod = 'EH5011649') OR (tabulka_zbozi.kod = 'EH5014552') OR (tabulka_zbozi.kod = 'EH5016919') OR (tabulka_zbozi.kod = 'EH6009301') OR (tabulka_zbozi.kod = 'EH6012540') OR (tabulka_zbozi.kod = 'EH7109424') OR (tabulka_zbozi.kod = 'EH7109425') OR (tabulka_zbozi.kod = 'EH7109426') OR (tabulka_zbozi.kod = 'EH7110270') OR (tabulka_zbozi.kod = 'EH7110441') OR (tabulka_zbozi.kod = 'EH7110445') OR (tabulka_zbozi.kod = 'EH7110446') OR (tabulka_zbozi.kod = 'EH7110523') OR (tabulka_zbozi.kod = 'EH7110631') OR (tabulka_zbozi.kod = 'EH7110632') OR (tabulka_zbozi.kod = 'EH7110633') OR (tabulka_zbozi.kod = 'EH7110634') OR (tabulka_zbozi.kod = 'EH7110635') OR (tabulka_zbozi.kod = 'EH7110636') OR (tabulka_zbozi.kod = 'EH7110637') OR (tabulka_zbozi.kod = 'EH7110736') OR (tabulka_zbozi.kod = 'EH7110760') OR (tabulka_zbozi.kod = 'EH7110940') OR (tabulka_zbozi.kod = 'EH7110941') OR (tabulka_zbozi.kod = 'EH7110946') OR (tabulka_zbozi.kod = 'EH7110947') OR (tabulka_zbozi.kod = 'EH7110948') OR (tabulka_zbozi.kod = 'EH7110951') OR (tabulka_zbozi.kod = 'EH7110952') OR (tabulka_zbozi.kod = 'EH7110953') OR (tabulka_zbozi.kod = 'EH7110954') OR (tabulka_zbozi.kod = 'EH7110957') OR (tabulka_zbozi.kod = 'EH7110958') OR (tabulka_zbozi.kod = 'EH7110959') OR (tabulka_zbozi.kod = 'EH7110960') OR (tabulka_zbozi.kod = 'EH7111026') OR (tabulka_zbozi.kod = 'EH7111263') OR (tabulka_zbozi.kod = 'EH7111577') OR (tabulka_zbozi.kod = 'EH7111813') OR (tabulka_zbozi.kod = 'EH7113745') OR (tabulka_zbozi.kod = 'EH7113746') OR (tabulka_zbozi.kod = 'EH7113747') OR (tabulka_zbozi.kod = 'EH7208390') OR (tabulka_zbozi.kod = 'EH7209058') OR (tabulka_zbozi.kod = 'EH7209059') OR (tabulka_zbozi.kod = 'EH7209467') OR (tabulka_zbozi.kod = 'EH7209807') OR (tabulka_zbozi.kod = 'EH7212003') OR (tabulka_zbozi.kod = 'EH7212004') OR (tabulka_zbozi.kod = 'EH7214729') OR (tabulka_zbozi.kod = 'EH7218154') OR (tabulka_zbozi.kod = 'EH7218447') OR (tabulka_zbozi.kod = 'EH7218941') OR (tabulka_zbozi.kod = 'EH7303484') OR (tabulka_zbozi.kod = 'EH7304119') OR (tabulka_zbozi.kod = 'EH7304120') OR (tabulka_zbozi.kod = 'EH7304121') OR (tabulka_zbozi.kod = 'EH7304598') OR (tabulka_zbozi.kod = 'EH7304607') OR (tabulka_zbozi.kod = 'EH7306383') OR (tabulka_zbozi.kod = 'EH7306384') OR (tabulka_zbozi.kod = 'EH7306385') OR (tabulka_zbozi.kod = 'EH7306386') OR (tabulka_zbozi.kod = 'EH7306388') OR (tabulka_zbozi.kod = 'EH7308473') OR (tabulka_zbozi.kod = 'EH7309036') OR (tabulka_zbozi.kod = 'EH7409521') OR (tabulka_zbozi.kod = 'EH7409522') OR (tabulka_zbozi.kod = 'EH7409523') OR (tabulka_zbozi.kod = 'EH7409524') OR (tabulka_zbozi.kod = 'EH7409722') OR (tabulka_zbozi.kod = 'EH7409727') OR (tabulka_zbozi.kod = 'EH7409729') OR (tabulka_zbozi.kod = 'EH7409733') OR (tabulka_zbozi.kod = 'EH7410065') OR (tabulka_zbozi.kod = 'EH7410424') OR (tabulka_zbozi.kod = 'EH7501342') OR (tabulka_zbozi.kod = 'EH7501471') OR (tabulka_zbozi.kod = 'EH7502399') OR (tabulka_zbozi.kod = 'EH7504570') OR (tabulka_zbozi.kod = 'EH7504571') OR (tabulka_zbozi.kod = 'EH7504671') OR (tabulka_zbozi.kod = 'EH7602491') OR (tabulka_zbozi.kod = 'EH7700162') OR (tabulka_zbozi.kod = 'EH7721531') OR (tabulka_zbozi.kod = 'EH7762829') OR (tabulka_zbozi.kod = 'EH8101916') OR (tabulka_zbozi.kod = 'EH9065619') OR (tabulka_zbozi.kod = 'EH9065667')) AND tabulka_zbozi.cena >= '1' AND tabulka_zbozi.cena <= '2885' AND ((tabulka_zbozi_vlastnosti.tabulka_vlastnost = 'EF000187' AND tabulka_zbozi_vlastnosti.hodnota = 'AC') AND (tabulka_zbozi_vlastnosti.tabulka_vlastnost = 'EF009556' AND tabulka_zbozi_vlastnosti.hodnota = '6')) |
||
Kajman Profil |
#2 · Zasláno: 8. 3. 2021, 19:58:52
Zkuste variantu se 2 parametry z Některé časteji řešené dotazy pro MySQL - FAQ » Nalezení položek mající všechny hledané vlastnosti
|
||
pajadvorak Profil |
#3 · Zasláno: 8. 3. 2021, 21:25:27
Kajman:
upravil jsem konec dotazu: GROUP BY etim_zbozi.kod having count(distinct etim_zbozi_vlastnosti.etim_vlastnost, etim_zbozi_vlastnosti.hodnota) = 6 a bohužel to nefunguje, výsledek je 0 vidíte tam chybu? |
||
Kajman Profil |
#4 · Zasláno: 9. 3. 2021, 01:38:27
Ano, to jste neupravil dobře. Po úpravě dle FAQ by to mělo být spíše něco jako
SELECT z.kod, z.kod_vyrobce, z.kod_dodavatele, z.nazev, z.cena, z.cena_doporucena, z.popis, z.dostupnost FROM tabulka_zbozi z JOIN (SELECT zv.kod_zbozi FROM tabulka_zbozi_vlastnosti zv WHERE (zv.tabulka_vlastnost, zv.hodnota) IN ( ('EF000187', 'AC'), ('EF009556', '6' ) ) GROUP BY zv.kod_zbozi HAVING Count(DISTINCT zv.tabulka_vlastnost, zv.hodnota) = 2) t ON z.kod = t.kod_zbozi WHERE z.kod IN ( 'EH1054350', 'EH1714832', 'EH1715136', 'EH1749823', 'EH1749824', 'EH1799946', 'EH2017500', 'EH2028068', 'EH2028069', 'EH2029337', 'EH2029338', 'EH2029339', 'EH2029340', 'EH2030875', 'EH2032241', 'EH2500907', 'EH2503340', 'EH2508120', 'EH3007240', 'EH3020463', 'EH3020468', 'EH3020469', 'EH3020824', 'EH3023733', 'EH3025948', 'EH3026426', 'EH3026713', 'EH3027004', 'EH3027006', 'EH3027007', 'EH3027353', 'EH3034496', 'EH4000446', 'EH4000454', 'EH4008501', 'EH4019315', 'EH4019420', 'EH4019973', 'EH5000325', 'EH5007844', 'EH5008621', 'EH5008622', 'EH5008623', 'EH5008624', 'EH5009114', 'EH5009658', 'EH5011649', 'EH5014552', 'EH5016919', 'EH6009301', 'EH6012540', 'EH7109424', 'EH7109425', 'EH7109426', 'EH7110270', 'EH7110441', 'EH7110445', 'EH7110446', 'EH7110523', 'EH7110631', 'EH7110632', 'EH7110633', 'EH7110634', 'EH7110635', 'EH7110636', 'EH7110637', 'EH7110736', 'EH7110760', 'EH7110940', 'EH7110941', 'EH7110946', 'EH7110947', 'EH7110948', 'EH7110951', 'EH7110952', 'EH7110953', 'EH7110954', 'EH7110957', 'EH7110958', 'EH7110959', 'EH7110960', 'EH7111026', 'EH7111263', 'EH7111577', 'EH7111813', 'EH7113745', 'EH7113746', 'EH7113747', 'EH7208390', 'EH7209058', 'EH7209059', 'EH7209467', 'EH7209807', 'EH7212003', 'EH7212004', 'EH7214729', 'EH7218154', 'EH7218447', 'EH7218941', 'EH7303484', 'EH7304119', 'EH7304120', 'EH7304121', 'EH7304598', 'EH7304607', 'EH7306383', 'EH7306384', 'EH7306385', 'EH7306386', 'EH7306388', 'EH7308473', 'EH7309036', 'EH7409521', 'EH7409522', 'EH7409523', 'EH7409524', 'EH7409722', 'EH7409727', 'EH7409729', 'EH7409733', 'EH7410065', 'EH7410424', 'EH7501342', 'EH7501471', 'EH7502399', 'EH7504570', 'EH7504571', 'EH7504671', 'EH7602491', 'EH7700162', 'EH7721531', 'EH7762829', 'EH8101916', 'EH9065619', 'EH9065667' ) AND z.cena >= 1 AND z.cena <= 2885 |
||
pajadvorak Profil |
Tak jsem to zřejmě rozchodil... Děkuji
Potřebuji ještě rozchodit jeden dotaz SELECT *, COUNT(etim_vlastnost) AS pocet_vyskytu FROM etim_zbozi_vlastnosti WHERE kod_zbozi IN ('EH1167961','EH1189896','EH1215371','EH1222865','EH1222866','EH1222867','EH1222869','EH1222871','EH1225081') GROUP BY nazev HAVING pocet_vyskytu > 1 ORDER BY nazev ASC SELECT *,COUNT(nazev) AS pocet_vyskytu FROM etim_zbozi_vlastnosti WHERE kod_zbozi IN ('EH1167961','EH1189896','EH1215371','EH1222865','EH1222866','EH1222867','EH1222869','EH1222871','EH1225081') AND nazev = 'Barva' GROUP BY hodnota ORDER BY hodnota ASC V 2. dotazu se nazev Barva bere z 1. dotazu. Potřeboval bych vytvořit jeden dotaz a z něho sestavit vše. To znamená, že mám seznam kódů kod_zbozi IN ('EH1167961','.....). Tím vyfiltruje všechny vlastnosti. A následně s nimi potřebuji pracovat tak, že potřebuji v PHP vypsat všechny názvy (což je jen nadpis) a pod nadpis všechny názvy a hodnoty. Ale pouze jednou. V tabulce jsou samozřejmě několikrát - ke každému kodu zvlášť. To znamená, že v tabulce to vypadá takto: EH1167961 / barva / bílá EH1167962 / barva / bílá EH1167963 / barva / černá A já potřebuji, aby výsledek byl takovýto: BARVA bílá (2) černá (1) |
||
Kajman Profil |
#6 · Zasláno: 9. 3. 2021, 22:51:45
SELECT hodnota barva, Count(*) AS pocet_vyskytu FROM etim_zbozi_vlastnosti WHERE kod_zbozi IN ( 'EH1167961', 'EH1189896', 'EH1215371', 'EH1222865', 'EH1222866', 'EH1222867', 'EH1222869', 'EH1222871', 'EH1225081' ) AND nazev = 'Barva' GROUP BY hodnota ORDER BY pocet_vyskytu DESC A pro vývoj si zapněte přísnější mód dev.mysql.com/doc/refman/8.0/en/sql-mode.html#sqlmode_only_full_group_by ať to nepovolí takové nesmyslné dotazy, co tu dáváte. |
||
pajadvorak Profil |
#7 · Zasláno: 10. 3. 2021, 06:41:28
Kajman:
Ještě jsem se nevyjádřil dostatečně jasně. Zde přikládám ukázku z tabulky: kod_zbozi etim_vlastnost nazev hodnota jednotka EH1017740 EF007341 Připojitelný průřez jemně laněného vodiče bez duti... ANO EH1017740 EF007339 Připojitelný průřez jemně laněného vodiče s dutink... NE EH1017740 EF007337 Připojitelný průřez plného vodiče ANO EH1017740 EF007343 Připojitelný průřez laněného vodiče NE EH1017740 EF008250 Jmenovitý proud In 10 A EH1017740 EF000228 Jmenovité napětí 230 V EH1017740 EF002526 Provedení elektrického připojení 1 XXX EH1017740 EF002527 Provedení elektrického připojení 2 XXX EH1017740 EF008219 Pozice připojení 3 EH1017740 EF002659 Počet úrovní 5 EH1017740 EF002660 Počet svorkových míst na jedné úrovni 5 EH1017740 EF002661 Interně přemostěná patra NE EH1017740 EF000003 Způsob montáže 3 EH1017740 EF007341 Připojitelný průřez jemně laněného vodiče bez duti... ANO EH1027248 EF007339 Připojitelný průřez jemně laněného vodiče s dutink... NE EH1027248 EF007337 Připojitelný průřez plného vodiče ANO EH1027248 EF007343 Připojitelný průřez laněného vodiče NE EH1027248 EF008250 Jmenovitý proud In 10 A EH1027248 EF000228 Jmenovité napětí 230 V EH1027248 EF002526 Provedení elektrického připojení 1 XXX EH1027248 EF002527 Provedení elektrického připojení 2 XXX EH1027248 EF008219 Pozice připojení 3 EH1027248 EF002659 Počet úrovní 5 EH1027248 EF002660 Počet svorkových míst na jedné úrovni 5 EH1027248 EF002661 Interně přemostěná patra NE EH1027248 EF000003 Způsob montáže 3 Potřebuji tedy sestavit vždy jeden název vlastnosti a k němu vypsat všechny (hodnoty + jednotky) + počet, které jsou obsahem pole "kod_zbozi IN..." Potřebuji, aby výsledkem byl níže uvedený příklad: Barva - Bílá (586) - Modrá (1) - Rudá (1) + Zobrazit více Délka - 15 m (37) - 18 m (1) - 70 m (5) + Zobrazit více Funkce odpojení ANO (5) NE (4) Interně přemostěná patra - 100 (44) - 240 (1) - 70 (5) + Zobrazit více |
||
Kajman Profil |
#8 · Zasláno: 10. 3. 2021, 10:29:15
Zkuste něco jako
SELECT etim_vlastnost, nazev, hodnota, jednotka, Count(*) AS pocet_vyskytu FROM etim_zbozi_vlastnosti WHERE kod_zbozi IN ( 'EH1167961', 'EH1189896', 'EH1215371', 'EH1222865', 'EH1222866', 'EH1222867', 'EH1222869', 'EH1222871', 'EH1225081' ) GROUP BY etim_vlastnost, nazev, hodnota, jednotka ORDER BY nazev, etim_vlastnost, jednotka, hodnota Pak použijete v php např. něco jako Nejčastější potíže s PHP (FAQ) » Nadpis skupiny nejen při výpisu z databáze Ale podle ukázky dat návrh databáze nedodržuje normální formy. Také ukládáte čísla jako stringy a budou se tak řadit jako stringy a ne čísla ('9' bude větší než '10'). |
||
pajadvorak Profil |
#9 · Zasláno: 10. 3. 2021, 21:05:33
Kajman:
Super. Dal jsem to do provozu... :-) A mám ještě problém, snad již poslední v tomto filtru. Mám zadané odeslání formuláře níže uvedeným způsobem. $("#form_filtr_pc").click(function(){ document.getElementById("form_filtr_pc").submit(); }); Reaguje mi to jak na zatržení checkboxu, což je žádoucí. Ale reaguje mi to i na níže uvedený kód, který mi zobrazí schované checkboxy (počet > 4) a to je nežádoucí. <a class="link link-collapse small font-size-13 text-gray-27 d-inline-flex mt-2" data-toggle="collapse" href="#collapse<?php echo "schovat".$vlastnosti_i3; ?>" role="button" aria-expanded="false" aria-controls="collapse<?php echo "schovat".$vlastnosti_i3; ?>"> <span class="link__icon text-gray-27 bg-white"> <span class="link__icon-inner">+</span> </span> <span class="link-collapse__default">Zobrazit více</span> <span class="link-collapse__active">Zobrazit méně</span> </a> Jak to udělat, aby se pouze zobrazily schované checkboxy, ale neodeslal se formulář? |
||
Kajman Profil |
Sice to nesouvísí vůbec s databázemi, ale zkuste něco jako
$("#form_filtr_pc").on('click', 'input[type="checkbox"]', document.getElementById("form_filtr_pc").submit); Edit: A pokud u těch checkboxů bude platit, že stačí jen jedna zatržená hodnota ve skupině vlastností, tak v having porovnávejte Count(DISTINCT zv.tabulka_vlastnost) s počtem skupin, kde je zatržená alespoň jedna věc. |
||
pajadvorak Profil |
Kajman:
To mi v konzoli píše chybu (#form_filtr_pc): Uncaught TypeError: Illegal invocation at HTMLFormElement.dispatch (jquery.min.js:2) at HTMLFormElement.y.handle (jquery.min.js:2) dispatch @ jquery.min.js:2 y.handle @ jquery.min.js:2 EDIT: u těch checkbxoů to platí, ale teď asi nevím, jak má ten dotaz konrkétně vypadat SELECT etim_vlastnost, nazev, hodnota, jednotka, Count(*) AS pocet_vyskytu FROM etim_zbozi_vlastnosti WHERE kod_zbozi IN () GROUP BY etim_vlastnost, nazev, hodnota, jednotka ORDER BY nazev, etim_vlastnost, jednotka, hodnota |
||
Keeehi Profil |
#12 · Zasláno: 10. 3. 2021, 23:22:41
pajadvorak:
„To mi v konzoli píše chybu (#form_filtr_pc):“ Bude to mít zřejmě problém s tím callbackem. Dej tam anonymní funkci jako ve tvém příkladu a měl bys být v pohodě. |
||
pajadvorak Profil |
#13 · Zasláno: 11. 3. 2021, 17:29:05
pajadvorak:
$("#form_filtr_pc").click(function(){ document.getElementById("form_filtr_pc").submit(); }); Jak to prosím myslíš? $("#form_filtr_pc").click(function(){ document.getElementById("form_filtr_pc").submit(); }); Toto sice funguje, ale neřeší to můj problém... |
||
Keeehi Profil |
#14 · Zasláno: 11. 3. 2021, 18:19:00
$("#form_filtr_pc").on('click', 'input[type="checkbox"]', function(){ document.getElementById("form_filtr_pc").submit(); }); |
||
pajadvorak Profil |
#15 · Zasláno: 11. 3. 2021, 18:39:39
Keeehi:
Super, toto funguje parádně, děkuji |
||
pajadvorak Profil |
#16 · Zasláno: 13. 3. 2021, 14:08:18
Keeehi:
$("#form_filtr_pc").on('click', 'input[type="checkbox"]', function(){ document.getElementById("form_filtr_pc").submit(); }); Ještě mám jeden problém. Nevím jak mám vložit onMouseUp namísto click. Potřebuji, aby se formulář odeslal po uvlonění tlačítka myší nad prvkem. Níže uvedený kód nefunguje. Problém je, že se mění cena, ale formulář se při "change" odesílal de facto hned... :-( $("#form_filtr_pc").on('MouseUp', 'input[type="checkbox"]', function(){ document.getElementById("form_filtr_pc").submit(); }); |
||
Keeehi Profil |
pajadvorak:
Zkus to malýma ;) a trochu googlit by taky nezaškodilo |
||
pajadvorak Profil |
#18 · Zasláno: 13. 3. 2021, 16:20:46
Keeehi:
Tak bohužel nefunguje. Nevím, zda je to tím <inputem>. A nevím jak to vyřešit. Víš jak na to? <input id="filtr_1_cena" class="js-range-slider" name="cena" type="text" data-extra-classes="u-range-slider u-range-slider-indicator u-range-slider-grid" data-type="double" data-grid="false" data-hide-from-to="true" data-prefix="Kč" data-min="<?php echo $cena_min; ?>" data-max="<?php echo $cena_max; ?>" data-from="<?php echo $cena_from; ?>" data-to="<?php echo $cena_to; ?>" data-result-min="#rangeSliderExample3MinResult" data-result-max="#rangeSliderExample3MaxResult"> javascript $("#form_filtr_pc").on('mouseup', 'input[id="filtr_1_cena"]', function(){ document.getElementById("form_filtr_pc").submit(); }); |
||
Keeehi Profil |
#19 · Zasláno: 13. 3. 2021, 16:57:03
pajadvorak:
„Nevím, zda je to tím <inputem>.“ Řekl bych že ano. Na ten input reálně neklikáš. Máš tam javscriptem nahrazené něco jiného. To je to na co klikáš. Proto selector input[id="filtr_1_cena"] musí být něco jiného. Co? No to záleží čím to ten javascript nahradil.
Nicméně, tobě jde o to odeslat formulář když změníš hodnotu nějakého inputu. Tak nekontroluj kde se na co klikne (protože třeba zatrhnout checkbox dokážu jen s klávesnicí aniž bych potřeboval myš, takže ten click bych ti stejně nespustil) a kontroluj to co chceš - změnu hodnoty inputu. Ano, i na to existuje event. Dokonce by to mělo fungovat i na ten javascriptový range, protože tuším, že na pozadí bude měnit hodnotu toho inputu. Takže vše co celé co potřebuješ bude $("#form_filtr_pc input").change(function(){ document.getElementById("form_filtr_pc").submit(); }); Jen bude dobré se podívat na tu javascriptovou range náhradu, jestli hodnotu zdrojového inputu mění kontinuálně nebo až po pouštění. Pokud by to bylo kontinuálně, což asi nechceš, tak se koukni na možnosti nastavení při inicializace. Zrovna tohle by mohlo být konfigurovatelné. |
||
Časová prodleva: 3 roky
|
0