| 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: 12 let
|
|||
0