Autor | Zpráva | ||
---|---|---|---|
ZloBR Profil * |
#1 · Zasláno: 19. 4. 2007, 14:20:46
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 * |
#2 · Zasláno: 20. 4. 2007, 12:14:19
Nebo jinak...
Mate nekdo nejaky odkaz na scripty s 2 selecty? Neco jako znacka a typ auta? Diky |
||
Časová prodleva: 7 dní
|
|||
Petroff Profil |
#3 · Zasláno: 27. 4. 2007, 15:51:26 · Upravil/a: Petroff
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 * |
#4 · Zasláno: 29. 4. 2007, 23:26:59
Nerad bych se opakoval ale neposilal jsem to jiz jednou a nahodou dokonce tobe?
http://chemik.ostravak.eu/projekty/ (dole) |
||
Časová prodleva: 17 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0