Autor | Zpráva | ||
---|---|---|---|
Pavel Jk. Profil * |
#1 · Zasláno: 9. 6. 2013, 21:26:07
Dobrý večer,
vím, nekonečné téma, ale nic kloudného jsem nenašel. Používám tento script: <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <script src="select-depend.js" type="text/javascript"></script> </head> <body onload="Sel.initAll()"> <?php include "prihlaseni_k_db.php"; $vysl=mysql_query("select s.nazev, s.id as id_sekce, p.podsekce from sekce s left join podsekce p on s.nazev=p.sekce order by s.nazev"); ?> <form method="post"> <?php echo "<select name=\"dva_selecty\">"; $pamet=""; while($zaznam = mysql_fetch_array($vysl)){ if ($zaznam["nazev"]!= $pamet) { $pamet = $zaznam["nazev"]; echo "<optgroup label=\"".$zaznam["nazev"]."\">"; } echo "<option value=\"".$zaznam["podsekce"]."\">".$zaznam["podsekce"]."</option>"; } echo "</optgroup>"; echo "</select>"; ?> <input type="submit"> </form> </body> javascript, který to zpracovává je zde: function Sel(origSelect, groups, place) { this.origSelect = origSelect; this.groups = groups; this.place = place; this.newSelect = document.createElement('select'); } Sel.prototype.init = function() { var option, text, i; for (i = 0; i < this.groups.length; i++) { text = this.groups[i].name; option = document.createElement('option'); option.appendChild(document.createTextNode(text)); this.newSelect.appendChild(option); } if (this.place) { this.place.appendChild(this.newSelect) } else { this.origSelect.parentNode.insertBefore(this.newSelect, this.origSelect); } this.setChoise(this.groups[0]); this.newSelect.oSel = this; this.newSelect.onchange = function() { this.oSel.setChoise(this.oSel.groups[this.selectedIndex]); } } Sel.prototype.setChoise = function(group) { var options; this.clearOrigSelect(); for (var i = 0; i < group.options.length; i++) { this.origSelect.appendChild(group.options[i]); } } Sel.prototype.clearOrigSelect = function() { while (this.origSelect.hasChildNodes()) { this.origSelect.removeChild(this.origSelect.firstChild); } } Sel.initAll = function() { var selectsNodeList, selectsArray = [], select, groups; selectsNodeList = document.getElementsByTagName('select'); for (var i = 0; i < selectsNodeList.length; i++) { selectsArray[i] = selectsNodeList[i]; } for (var i = 0; i < selectsArray.length; i++) { select = selectsArray[i]; groups = select.getElementsByTagName('optgroup'); if (groups.length > 0) { Sel.initSelect(select, groups); } } } Sel.initSelect = function(select, groups) { var arrGroups = [], group, goptions, i, j = []; for (i = 0; i < groups.length; i++) { group = groups[i]; arrGroups[i] = {name: group.getAttribute('label'), options: []} goptions = group.getElementsByTagName('option'); if (goptions.length < 1) { return; } for (j = 0; j < goptions.length; j++) { arrGroups[i].options[j] = goptions[j]; } } var sel = new Sel(select, arrGroups); sel.init(); } Vše jsem dotáhl do takového stádia, že to to funguje skvěle. Problém nastává když chci výsledné hodnoty obou selectů uložit do DB. Podsekci uložím v pohodě, horší je to ze sekcí, nevím jak získat údaj z toho prvního selectu. V té HTML části je jen jeden. Může mi prosím někdo poradit, případně popostrčit jak na to? |
||
Pavel Jk. Profil * |
#2 · Zasláno: 10. 6. 2013, 18:23:17
Když nikdo neví, mohli byste mi alespoň poradit nějaký spolehlivý způsob, který bude fungovat? Nejlíp javascript. V ajaxu se neorientuju.
Potřebuji propojit dva selecty, do kterých načítám údaje z databáze a potom je do databáze ukládám. |
||
_es Profil |
#3 · Zasláno: 10. 6. 2013, 23:14:35
Pavel Jk.:
„Když nikdo neví“ On by aj možno niekto vedel, len si to dal v takej nejakej „nevábnej“ forme. Čo s tým má niekto, kto by ti chcel poradiť, robiť? Napríklad si mohol aspoň vyrobiť „živú“ ukážku. Asi ten druhý select pridávaš nejako nesprávne - ak by bol súčasťou formulára, aj mal nastavenú vlastnosť name , tak sa pri odoslaní formulára odošle aj jeho hodnota.
|
||
Pavel Jk. Profil * |
#4 · Zasláno: 11. 6. 2013, 11:30:27
_es:
Prošel jsem snad celé forum, ale spolehlivý způsob jak to vyřešit jsem nenašel, takže s toho usuzuji, že to nikdo neví. |
||
_es Profil |
#5 · Zasláno: 11. 6. 2013, 11:39:55
Pavel Jk.:
S menením hodnôt elementu select nie je problém, napríklad ako tu. Ak chceš používať dva selecty, prečo ich nemáš dva hneď a len nemeníš ich prvky option? |
||
Pavel Jk. Profil * |
#6 · Zasláno: 11. 6. 2013, 22:00:33
_es:
Tak nějak jsem to zamýšlel, bohužel nevím jak ty prvky jednotlivých selectů měnit. |
||
_es Profil |
#7 · Zasláno: 12. 6. 2013, 09:10:19
Pavel Jk.:
„nevím jak ty prvky jednotlivých selectů měnit.“ Veď to máš v tom odkazovanom vlákne - meň ich kolekcie options developer.mozilla.org/en-US/docs/Web/API/HTMLOptionsCollection developer.mozilla.org/en-US/docs/Web/API/HTMLOptionElement.
|
||
Časová prodleva: 11 let
|
0