Autor | Zpráva | ||
---|---|---|---|
Anonymní Profil * |
#1 · Zasláno: 26. 10. 2006, 11:48:36
Dobrý den,
mám jednoduchý seznam <select name="vyhledavani-cena" id="vyhledavani-cena"> <option value="0">nerozhoduje</option> <option id='cena_1000' value="1000">1000</option> <option id='cena_2000' value="2000">2000</option> <option id='cena_3000' value="3000">3000</option> </select> A mam dva buttony: <input type='button' onclick='odstranOptiony()' value='Odstran optiony' /> <input type='button' onclick='vratOptiony()' value='Vrat optiony' /> Když uživatel klikne na první butony, tak nabítka select nebude obsahovat žádné inputy (pole inputů bude prázdné) A když klikne na "Vratit optiony", tak se zase všechny inputy zobrazí. Duležité ale je, aby se pracovalo s optiony, nikoli selectem. Tento skript pak bude sloužit pro parametrické vyhledávání v Ajaxu. Máte několik seznamů nabídek. Uživatel si vybere z jednoho seznamu nějakou hodnotu a podle této hodnoty se změní hodnoty v druhém selectu (resp. nezmění, jen by nepotřebné hodnoty měly zmizet). Př.: máte cestovní kancelář, která nabízí zájezdy. Vy si vyberete Termín: září a v selectu "Ceny" zmízí (nebo se zašednou) ceny, které pro zájezdy v září neexistují. Víte, jak na to? IE nepodporuje display:none, visible:hidden ani atribut disabled u inputů. Díky moc. |
||
peta Profil * |
#2 · Zasláno: 26. 10. 2006, 15:27:40
ja prepisuji treba cely select, ale lze i to...
o = objGet2(f,"xxx"); objDel(o); if (y>0) { o1=creEL(f,'SELECT'); o1.name = "selplayer"; o1.className = "select"; j = o1.length; for (i=0;i<y;i++) { x = xThis.mapa1["players"][i]; o1[j] = new Option(x[1]+" ("+x[2]+"x"+x[3]+")",i); j++; } appEL(o,o1); } http://www.volny.cz/peter.mlich/www.htm#mssub11 # ** www.mattkruse.com JS priklady (select, calendar, tree) |
||
venca12 Profil |
#3 · Zasláno: 26. 10. 2006, 20:04:26
Obdobný problém jsem nedávno také řešil a vyřešil jsem ho následovně:
Potřeboval jsem, při vybrání něčeho v prvním selectu zobrazit určitý počet optionů v jiném selectu. Seznam všech možných optionů jsem si uložil do dvourozměrného pole, kde první klíč je nějaké nepodstatné číslo položky a druhý rozlišuje value záznamu v prvním selectu a hodnotu optionu v druhém. Názroně: var optiony = new Array( V kódu dva selecty: <select id="prvni"><option value="1">jedna</option><option value="2">dva</option></select> Teď stačí píchnout na select1 událost onchange, aby se duhý po změně prvního naplnil nějakými optiony: document.getElementById('prvni').onchange=function() { StruČně: Pomocí document.getElementById() dostaneš select do proměnné. Vlastnost .length ti u objektu typu select vrátí počet optionů, které v něm jsou aktuálně uloženy/zobrazeny. Pomocí vlastnosti .options se můžeš dostat k jednotlivým optionům, je to pole, takže optiony indexuješ pomocí id, např .options[1], .options[2] atp., vlastnost optionu získáš, přes další vlastnost .value, tzn.: .options[2].value. Pokud budeš chtít přidat do selectu další option, musíš ho vytvořit, jako objekt nakonec pole .options, tzn. použiješ něco jako toto: select.options[select.length] = new Option(text, value); Parametry v konstruktoru Option jsou první text v optionu a druhý value, možná je to obráceně, nevím. Pokud budeš chtít option ze selectu vymazat, stačí, když mu přiřadíš null, tzn.: select.options[1] = null; Pozor na to, že po vymazaném optionu vznikne díra, do které se posunou další optiony, proto nejde použít k mazání následující kód: for(i=0;i<select.length;i++)Protože by v každé iteraci vzrostl index i a díky výmazu zároveň klesla délka pole length, tudíž by se myslím vymazala jenom polovina optionů. Lepší je použít následující: while(select.length)Alespoň já jsem to použil a zatím to funguje bezvadně. Na další možnosti použití a řešení přijdeš určitě sám, když už pracuješ s tím Ajaxem. Btw. říkej tomu raději xmlhttp, děkuju. |
||
Časová prodleva: 17 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0