Autor Zpráva
ZloBR
Profil *
Ahoj

Nasel jsem tento script na 2 selectory docela to splnuje to co potrebuji , ale nevim jak do jednotlivych value druheho selectu prirazovat ID dane podsekce.
Jmena se mi vypisi, ale potrebuji posilat ID.
Napr. neco jako
comboBoxChildValues["b"] = new Array("[ID polozky 1 1] Polozka 1 1","[ID polozky 1 2] Polozka 1 2");


Toto mam

var comboBoxChildValues = new Array();
comboBoxChildValues["a"] = new Array("N/A");
comboBoxChildValues["b"] = new Array(
"Polozka 1 1",
"Polozka 1 2",
"Polozka 1 3",
"Polozka 1 4",
"Polozka 1 5",
"Polozka 1 6");
comboBoxChildValues["c"] = new Array(
"Polozka 2 1",
"Polozka 2 2",
"Polozka 2 3");
comboBoxChildValues["d"] = new Array(
"Polozka 3 1",
"Polozka 3 2",
"Polozka 3 3",
"Polozka 3 4");

function loadChildBox() {
var comboBoxRoot = document.getElementById('comboBox_Root');
var comboBoxChild = document.getElementById('comboBox_Child');

var selectedIndex = comboBoxRoot.selectedIndex;
var selectedValue = comboBoxRoot.options[selectedIndex].value;

comboBoxChild.options.length = 0;

for(i = 0; i < comboBoxChildValues[selectedValue].length; i++) {
comboBoxChild.options[i] = new Option(comboBoxChildValues[selectedValue][i],
comboBoxChildValues[selectedValue][i]);
}
}

<select id="comboBox_Root" onchange="loadChildBox();">
<option value="a">N/A</option>
<option value="b">Nabidka 1</option>
<option value="c">Nabidka 2</option>
<option value="d">Nabidka 3</option>
</select>
</div>
<br />
<div>
<select id="comboBox_Child">
<option value="/* TADY POTREBUJI ID*/">N/A</option>
</select>

Predem dekuji
ZloBR
Profil *
Nebo jinak...
Mate nekdo nejaky odkaz na scripty s 2 selecty?
Neco jako znacka a typ auta?
Diky
Petroff
Profil
Trochu jsem to poopravil a přidal testovací kód.
Vše je okomentované a vyzkoušené (Firefox, IE7).
Držím palce.

<HTML><HEAD><META HTTP-Equiv="Content-Type" CONTENT="text/html; charset=UTF-8">
<TITLE>One Line Output</TITLE>
<script>
var
IDvalues = [];
/*-------------------------------------------------------------------- -------------------------------------
JEN POKUD TI NEVYHOVUJÍ automaticky generované identifikátory (např. "a1", "c4"),
TAK si zde ulož (jako pole polí řetězců) vlastní hodnoty......viz funkce dejIDENT()
Možný postup:
- použil jsem IDvalues.push() k sestavení pole polí =
= [["a1","a2","a3","a4","a5","a6"],["b_1","b_2","b_3"],["c","cc","ccc"," cccc"]]
*/
IDvalues.push(["a1","a2","a3","a4","a5","a6"]);
IDvalues.push(["b_1","b_2","b_3"]);
IDvalues.push(["c","cc","ccc","cccc"]);
/*-------------------------------------------------------------------- -------------------------------------*/
comboBoxChildValues = new Array();
comboBoxChildValues["0"] = new Array();
comboBoxChildValues["a"] = new Array(
"Polozka a/1",
"Polozka a/2",
"Polozka a/3",
"Polozka a/4",
"Polozka a/5",
"Polozka a/6");
comboBoxChildValues["b"] = new Array(
"Polozka b/1",
"Polozka b/2",
"Polozka b/3");
comboBoxChildValues["c"] = new Array(
"Polozka c/1",
"Polozka c/2",
"Polozka c/3",
"Polozka c/4");
/*
........... namísto "Polozka" dát patřičné texty,
po odladění vymazat všechny identifikátory (a/1 až c/4)
____________________________________________________________________
*/
function vybrano(ident) {}
/*
FUNKCE: vybrano(ident)
-------------------------------------
- provede se při každém platném výběru
- můžeš do ní umístit svůj kód ..........viz. [EXAMPLE]
- v argumentu ident je předáván jedinečný identifikátor pro každou položku
(je to řetězec vytvořený z hodnot value - např: "b"+"3"="b3" )
- používáš-li vlastní kolekci identifikátorů (uloženou v IDvalues),
pak v kódu místo: IDENTIFIKATOR=ident použij IDENTIFIKATOR=dejIDENT().
- k dispozici máš tyto globální proměnné:
*/
var isValid=false,
selectedIndexRoot=0,
selectedIndexChild=0,
selectedValueRoot="0",
selectedValueChild="0",
selectedTextRoot="N/A",
selectedTextChild="N/A";
/*
Zde se vždy aktualizují hodnoty posledního výběru
- je-li platný,pak: isValid=true.
Nebylo-li nic vybráno (tj. některý selectedIndexXXX=0),
pak: isValid=false.
*/
function dejIDENT() {
return isValid?IDvalues[selectedIndexRoot-1][selectedIndexChild-1]:"";
}
/*
FUNKCE: dejIDENT()
-------------------------------
- vrátí identifikátor VYBRANÉ POLOŽKY(nebo "" v případě neplatného výběru)
- musíš mít identifikátory PRO VŠECHNY POLOŽKY uložené v poli polí IDvalues
- k dispozici máš tyto globální proměnné:
____________________________________________________________________
*/
function loadChildBox() {
var comboBoxRoot = document.getElementById('comboBox_Root');
var comboBoxChild = document.getElementById('comboBox_Child');

selectedIndexRoot = comboBoxRoot.selectedIndex;
selectedValueRoot = comboBoxRoot.options[selectedIndexRoot].value;
selectedTextRoot = comboBoxRoot.options[selectedIndexRoot].text;

isValid=false;

comboBoxChild.options.length = 1;
for(i = 0; i < comboBoxChildValues[selectedValueRoot].length; i++)
comboBoxChild.options[i+1] = new Option(comboBoxChildValues[selectedValueRoot][i],i+1);
}

function OnChangeChildBox() {
var comboBoxRoot = document.getElementById('comboBox_Root');
var comboBoxChild = document.getElementById('comboBox_Child');

selectedIndexChild = comboBoxChild.selectedIndex;
selectedValueChild = comboBoxChild.options[selectedIndexChild].value;
selectedTextChild = comboBoxChild.options[selectedIndexChild].text;
/*
Je-li výběr platný volat uživatelský ovladač vybrano(ident)
*/
if (isValid=Boolean(selectedIndexRoot*selectedIndexChild))
vybrano(selectedValueRoot+selectedValueChild);
}
</script>

</HEAD>
<BODY style="margin:2em;font-size:1em">

<select style="float:left;width:18ex" id="comboBox_Root" onchange="loadChildBox();">
<option value="0">N/A</option>
<option value="a">Nabidka A</option>
<option value="b">Nabidka B</option>
<option value="c">Nabidka C</option>
<!--------------- ......... namísto "Nabidka" dát patřičné texty,
..........................po odladění vymazat všechny indexy (A až C)
--------------------------------- komentáře smazat ----------------->
</select>

<select style="margin-left:2ex;width:18ex" id="comboBox_Child" onchange="OnChangeChildBox()">
<option value="0">N/A</option>
<!-- value="1" Polozka1 -->
<!-- value="2" Polozka2 -->
<!--------------------------- komentáře smazat ----------------------->
</select>

<HR>
<!---------------------- Testovaci kod ----------- [EXAMPLE] --------------------->
<P style="text-align:center;font-weight:800">
<a href="#" onclick='stav("comboBox_Root");return false'> Vypsat stav 1.boxu</a><br>
<a href="#" onclick='stav("comboBox_Child");return false'> Vypsat stav 2.boxu</a><br>
</P>
<div id="Vypis" style="font-family:Courier"></div>

<script>
function vypis(ident){
var okno = document.getElementById("Vypis");
var str="";
str+="<DIV style='padding: 0 3ex; color:black; font-weight:600; border: solid 3px black'>";
str+="<PRE> IDENTIFIKATOR =ident : " + ident + "</PRE>";
str+="<PRE> IDENTIFIKATOR =dejIDENT() : " + dejIDENT() + "</PRE>";
str+="</DIV>";
str+="<DIV style='padding: 0 3ex 1ex; color:gray; border: solid 1px gray'>";
str+="<P> BOX: DEFINOVANE IDENTIFIKATORY: <BR>";
str+=" ==== ========================== <BR>";
for(var i=0;i<IDvalues.length;i++) str+=" ["+(i+1)+"]: "+IDvalues[i].join(" ")+ "<BR>";
str+="</DIV>";
str+="<DIV style='padding: 0 2em 1ex; margin: 1ex 0; color:red; border: solid 1px red'>";
str+="<P> selectedIndexRoot : " + selectedIndexRoot;
str+="<P> selectedValueRoot : " + selectedValueRoot;
str+="<P> selectedTextRoot : " + selectedTextRoot;
str+="</DIV>";
str+="<DIV style='padding: 0 2em 1ex; color:blue; border: solid 1px blue'>";
str+="<P> selectedIndexChild : " + selectedIndexChild;
str+="<P> selectedValueChild : " + selectedValueChild;
str+="<P> selectedTextChild : " + selectedTextChild;
str+="</DIV>";
okno.innerHTML=str;
}

vybrano=vypis;

function stav(id){
var comboBox = document.getElementById(id),
selectedIndex = comboBox.selectedIndex,
selectedValue = comboBox.options[selectedIndex].value,
selectedText = comboBox.options[selectedIndex].text,
str="["+id+"]\n";
str+="-----------------------\n";
str+="selectedIndex : " + selectedIndex + "\n";
str+="selectedValue : " + selectedValue + "\n";
str+="selectedText : " + selectedText + "\n";
str+="-----------------------\n";
str+=" isValid : " + isValid+"\n";
str+="-----------------------\n";
alert(str);
}
</script>

</BODY></HTML>
Visitor
Profil *
Nerad bych se opakoval ale neposilal jsem to jiz jednou a nahodou dokonce tobe?

http://chemik.ostravak.eu/projekty/ (dole)
Toto téma je uzamčeno. Odpověď nelze zaslat.

0