Autor | Zpráva | ||
---|---|---|---|
nowis Profil |
#1 · Zasláno: 8. 2. 2015, 15:22:26
Zdravím,
prosím, nemáte někdo vyřešeno, nebo neuměl by někdo vymyslet řešení problému, který asi nebude nějak složitý, ale já nevím jak na něj? Omlouvám se jsem JS téměř začátečník, už se to snažím vyřešit druhý den ale pořád jsem v nějaké slepé uličce... Mám databázi krajů, k nim patřícím okresů a k nim patřícím obcím. Potřeboval bych aby bylo možné v selectech "vyber_kraj", "vyber_okres" a "vyber_obec" dvojklikem výběr přidat jako nový řádek do textarea. Dále aby se při jednokliku v selectech "vyber_kraj" a "vyber_okres" zobrazil patřičný obsah v následujícím selectu. Pro příklad kliknu na Stredocesky kraj a v selectu pro okresy se zobrazí středočeské okresy. Pokud na středočeský kraj dvojkliknu, rovnou se do textarea zapíše nový řádek "Středočeský kraj". Mělo by přitom fungovat i v případě vícenásobného výběru. Mám tento kód: <html><head> <script type="text/javascript" src="postupny_vyber.js"></script> </head> <body> <form> Kraje: <select name="vyber_kraj" size="15" multiple onclick="filtruj_okres()" ondblclick="zapis_kraj()" > <option value="Praha">Praha</option> <option value="Stredocesky">Stredocesky</option> </select> Okresy: <select name="vyber_okres" size="15" multiple onclick="filtruj_obec()" ondblclick="zapis_okres()" > <?php echo $vybrane_okresy_options; ?> </select> Obce: <select name="vyber_obec" size="15" multiple ondblclick="zapis_obec()" > <?php echo $vybrane_obce_options; ?> </select> Vybrano: <textarea rows="15" cols="15" name="vybrane_oblasti"> <?php echo $vybrane_oblasti; ?> </textarea> </form> </body> </html> Dotazy do DB bych asi vyřešil sám, jde mi spíše o to přenášení hodnot pomocí JS... Díky |
||
Destiny_1 Profil |
V rychlosti jsem sesmolil malou ukázku
obsah souboru index.html <html> <head> <meta charset="utf-8"> </head> <body> Kraje: <select name="vyber_kraj" size="15" multiple id="kraj" onclick="filtruj(this)" ondblclick="zapis(this.value)" > <option value="Zlínský kraj">Zlínský kraj</option> <option value="Olomoucký kraj">Olomoucký kraj</option> </select> Okresy: <select name="vyber_okres" size="15" multiple id="okres" onclick="filtruj(this)" ondblclick="zapis(this.value)" > </select> Obce: <select name="vyber_obec" size="15" multiple id="obec" ondblclick="zapis(this.value)" > </select> Vybrano: <textarea rows="15" cols="15" name="vybrane_oblasti" id="textarea"></textarea> <script> function filtruj(e){ var xhr = new XMLHttpRequest(); xhr.open('POST', 'ajax.php', true); xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); xhr.onload = function () { var jsonObj=JSON.parse(this.responseText); document.getElementById(jsonObj.cil).innerHTML = "";; for (i=0; i < jsonObj.option.length; i++){ var option = document.createElement("option"); console.log(jsonObj.option[i]); option.text = jsonObj.option[i]; option.value= jsonObj.option[i]; document.getElementById(jsonObj.cil).add(option); } }; xhr.send('id='+e.id+"&value="+e.value); } function zapis(e){ document.getElementById("textarea").value +=e+"\n"; } </script> </body> </html> obsah souboru ajax.php Místo pole použijete dotazy na db <?php $id=filter_input(INPUT_POST, "id"); $value=filter_input(INPUT_POST, "value"); $kraj["Zlínský kraj"]=array("Zlín","Uherské hradiště"); $kraj["Olomoucký kraj"]=array("Olomouc","Přerov"); $obec["Zlín"]=array("Želechovice","Otrokovice"); $obec["Uherské hradiště"]=array("Bojkovice","Březová"); $obec["Olomouc"]=array("Blatec","Blatec"); $obec["Přerov"]=array("Bělotín","Lhota"); header('Content-Type: application/json; charset=utf-8'); if ("kraj"==$id){ if (isset($kraj[$value])){ $data=array(); $data["option"]=$kraj[$value]; $data["cil"]="okres"; echo json_encode($data); } } elseif ("okres"==$id){ if (isset($obec[$value])){ $data=array(); $data["option"]=$obec[$value]; $data["cil"]="obec"; echo json_encode($data); } } ?> |
||
nowis Profil |
#3 · Zasláno: 8. 2. 2015, 19:22:55
Destiny_1:
Děkuji, prohrabu se tím :-) |
||
Časová prodleva: 10 let
|
0