2. lenyíló menü érték visszahívása adatbázisból JS

2. lenyíló menü érték visszahívása adatbázisból JS
2013-12-18T21:49:06+01:00
2013-12-19T20:59:35+01:00
2022-10-15T21:51:33+02:00
nekemezhobbi
Sziasztok!

Van egy JS scriptem, ami úgy funkcionál, hogy kiválasztok az egyik select lenyíló menüből valamit, akkor a másodikból ahhoz képest lehet választani. Mysql-ből hívja a neveket. Ez működik.

A probléma az, hogy ha php-n keresztül módosítani akarom a select nevét, és vissza akarom hívni az értékeket, akkor az első select-t nevét visszahívja, viszont a második, az üres marad. Próbáltam sokféleképpen, de nem akar összejönni. Megoldható, vagy nagyon bele kéne ahhoz nyúlni nagyon a JS-be?
Ebben kérném segítségeteket.

JS kód

function dynamicSelect(id1, id2) { // Feature test to see if there is enough W3C DOM support if (document.getElementById && document.getElementsByTagName) { // Obtain references to both select boxes var sel1 = document.getElementById(id1); var sel2 = document.getElementById(id2); // Clone the dynamic select box var clone = sel2.cloneNode(true); // Obtain references to all cloned options var clonedOptions = clone.getElementsByTagName("option"); // Onload init: call a generic function to display the related options in the dynamic select box refreshDynamicSelectOptions(sel1, sel2, clonedOptions); // Onchange of the main select box: call a generic function to display the related options in the dynamic select box sel1.onchange = function() { refreshDynamicSelectOptions(sel1, sel2, clonedOptions); }; } } function refreshDynamicSelectOptions(sel1, sel2, clonedOptions) { // Delete all options of the dynamic select box while (sel2.options.length) { sel2.remove(0); } // Create regular expression objects for "select" and the value of the selected option of the main select box as class names var pattern1 = /( |^)(select)( |$)/; var pattern2 = new RegExp("( |^)(" + sel1.options[sel1.selectedIndex].value + ")( |$)"); // Iterate through all cloned options for (var i = 0; i < clonedOptions.length; i++) { // If the classname of a cloned option either equals "select" or equals the value of the selected option of the main select box if (clonedOptions[i].className.match(pattern1) || clonedOptions[i].className.match(pattern2)) { // Clone the option from the hidden option pool and append it to the dynamic select box sel2.appendChild(clonedOptions[i].cloneNode(true)); } } }


html/php


<select id="pda-brand" style="" class="validate['required']" name="select1"> <option value="<?php echo $c004[$kateg]; ?>"><?php echo $c004[$kateg]; ?></option> <option value="100101"><?php echo $c161['100101']; ?></option> <option value="100102"><?php echo $c161['100102']; ?></option> <option value="100103"><?php echo $c161['100103']; ?></option> </select> <select id="pda-type" style="" class="validate['required']" name="select2"> <option value="<?php echo $c004[$kateg2]; ?>"><?php echo $c004[$kateg2]; ?></option> <option class="100101" value="101"><?php echo $c160['101']; ?></option> <option class="100101" value="201"><?php echo $c160['201']; ?></option> </select>
Mutasd a teljes hozzászólást!
php-ból maximum azt tudod csinálni, hogy szimulálod amit a refreshDynamicSelectOptions csinál, és aszerint az option value-kból a megfelelőket írod bele.


Ezért javasoltam, hogy jobb lenne, ha a két select megjelenítése után a php-d írna egy script blokkot, amiben megfelelő paraméterekkel meghívja a refreshDynamicSelectOptions rutint.
Mutasd a teljes hozzászólást!

  • "select nevét"

    Azt miért akarod?

    Ha az értékére gondoltál, akkor az első select változtatása után hívd meg annak a change eseményénél lefutó eljárását.
    Mutasd a teljes hozzászólást!
  • Arra gondoltam:)
    JS-hez nem értek még ennyire sem mint a php-hez. nem látom át picit sem, valamiért sohasem tetszett ez a nyelv és most bosszulja meg önmagát:S "select változtatása után hívd meg annak a change eseményénél lefutó"? A sel2-re gondolsz gondolom, de azt, hogy hívom meg php-ben?
    Mutasd a teljes hozzászólást!
  • "de azt, hogy hívom meg php-ben? "

    php-ből sehogy.

    Amikor változtatod az értéket, akkor a kódba bele kell tenned egy
    <sctipt>

    </script>
    közé a hívást. (én rögtön a második select után szoktam.
    És majd a böngésző meghívja.
    Mutasd a teljes hozzászólást!
  • Most egyről beszélünk?
    Gondolom egyről, de én lemaradtam:)
    Van egy pl modositas.php oldal, ahol egymás mellett van a két select. Az első értékét behívja, a második üres.

    Értem én, hogy segíteni próbálsz, és szeretnéd, hogy magamtól rájöjjek, de most egyenlőre csak jobban belezavarodtam ebbe az egészbe. Azt is tudom, hogy nem fogsz egy-két jó szóra nekem full kész kódokat idemásolni, ezért megrágom, amit írtál, aztán írok, hogy mire jutottam...
    Mutasd a teljes hozzászólást!
  • Még mindig nem sikerült megoldanom sajnos. Ha php-ből sehogy sem fogom megoldani, akkor kár próbálkoznom vele nem? Ha megmozgatom az első select-et és rámegyek a behívott értékre kurzorral, akkor már odaugrik a második select is, ami már félsiker.
    Mutasd a teljes hozzászólást!
  • php-ból maximum azt tudod csinálni, hogy szimulálod amit a refreshDynamicSelectOptions csinál, és aszerint az option value-kból a megfelelőket írod bele.


    Ezért javasoltam, hogy jobb lenne, ha a két select megjelenítése után a php-d írna egy script blokkot, amiben megfelelő paraméterekkel meghívja a refreshDynamicSelectOptions rutint.
    Mutasd a teljes hozzászólást!
  • Már nagy körvonalakban értem, hogy mire gondolsz, de én ezt biztosan nem tudom megoldani, mert javascript és az nekem kínai, úgyhogy így marad. Megy a pont. Köszi a segítséget!
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd