Autor | Zpráva | ||
---|---|---|---|
okolojdouci Profil * |
#1 · Zasláno: 5. 10. 2011, 10:32:23
Mám seznam asi stovky dostupných položek, ze kterých chci ve formuláři umožnit vyvbrání libovolného počtu.
Jako nejpohodlnější řešení se mi jeví dva selecty (multiselect) vedle sebe, v pravém dostupné položky, v levém vybrané položky, mezi tím tlačítka Přidat, Odebrat. Nejsem zrovna mistr světa v JS. Poradíte, jak tlačítkem přesouvat více vybraných položek z jednoho selectu do druhého? |
||
okolojdouci Profil * |
#2 · Zasláno: 5. 10. 2011, 10:37:57
plus by se ještě hodilo Přidat vše, což bude nějaký foreach, ale to myslím JS neumí.
|
||
okolojdouci Profil * |
#3 · Zasláno: 5. 10. 2011, 11:04:00
|
||
okolojdouci Profil * |
#4 · Zasláno: 5. 10. 2011, 14:10:49
Ještě s tím zápasím.
Jestli jsem správně pochopil, tak abych mohl phpkem načíst vybrané položky <selectu>, musí mít name = "nazev[]" Když to tak ale pojmenuju, přestane mi ten odkázaný JS fungovat. Má to řešení? |
||
Kajman_ Profil * |
#5 · Zasláno: 5. 10. 2011, 14:44:24
Zkuste implementovat následující změny:
var SelectFrom = eval('document.main_form.'+MoveFrom); var SelectFrom = document.main_form[MoveFrom]; Pak v MoveFrom můžete mít závorky. |
||
okolojdouci Profil * |
#6 · Zasláno: 5. 10. 2011, 15:27:33
Kajman:
Tam kde chci položku odebrat, zmizí, to už je ok. Ale neproběhne to přidání položky do druhého seznamu (mezi dvěma alerty). A pochopitelně to proběhne jen jednou, provádění skriptu tí momentem končí. for (i=0; i<SelectFrom.options.length; i++) { if(SelectFrom.options[i].selected) { var name = SelectFrom.options[i].text; var ID = SelectFrom.options[i].value; SelectFrom.options[i] = null; alert ("1"); SelectTo.options[SelectTo.options.length]=new Option (name,ID); alert ("2"); i=i-1; } } |
||
Tori Profil |
#7 · Zasláno: 5. 10. 2011, 15:50:55
okolojdouci:
Všude to je potřeba upravit na form["jmeno[]"] - ve funkcích i onclick handlerech. Akorát u těch skrytých polí je trochu divné, aby se jmenovaly "AddAdmins[]", ale kdyby vám to nevadilo, tak ve funkci MoveOption může být if (ToDo=='Add') { container = document.main_form[(ToDo+MoveTo)]; } |
||
Kajman_ Profil * |
#8 · Zasláno: 5. 10. 2011, 15:52:33
U ostatních prvků formuláře, udělejte stejnou změnu.
|
||
okolojdouci Profil * |
#9 · Zasláno: 5. 10. 2011, 17:17:48
Kajman, Tori:
Funguje, díky moc. |
||
Časová prodleva: 13 let
|
0