Autor | Zpráva | ||
---|---|---|---|
LosFilipos Profil |
Dobrý den,
řeším již nějaku dobu tento problém a nějak se nemohu dopátrat toho, v čem je chyba: Mám tento kód, který mi má přidat do druhého selectu options podle toho, co vyberu v selectu prvním. Ve Firefoxu, Chorme i Opeře to funguje bez sebemenších problémů, avšak v IE to blbne. Ajax mi vrací options tak, jak by měl, ale v IE se po přiřazení do innerHTML nic nezobrazí. Pokud si po přiřazení výstupu selectu vypíšu jeho innerHTML, vidím tam: "hodnota první</option><option>hodnota druhá</option> ..." - první značka option chybí a v selectu se nic zezobrazí. V ostaních prohlížečích se innerHTML zobrazuje správně. Poradí někdo, jak to rozchodit? // V ukázce se dá přepnout mezi ajaxovým výstupem normálním a json; v php chyba také není... Tak už jsem to vyřešil sám... :-D Těsně po odeslání tohoto příspěvku mě to napadlo. Pro přidání option do selectu teď používám toto: for(var i = 0; i < json_data.length; i++) { var x = document.createElement('option'); x.innerHTML = json_data[i].value; select.appendChild(x); } |
||
Chamurappi Profil |
#2 · Zasláno: 3. 3. 2012, 16:32:34
Reaguji na LosFilipose:
Text <option> u se nastavuje vlastností text , tomu innerHTML bych zde moc nevěřil.
Původní problém spočíval v tom, že u některých elementů nejde v Exploreru měnit innerHTML .
|
||
LosFilipos Profil |
Chamurappi:
„Text <option>u se nastavuje vlastností text, tomu innerHTML bych zde moc nevěřil.“ Jsem odzkoušel že: pro IE se musí použít innerText , pro ostatní prohlížeče text
|
||
Chamurappi Profil |
#4 · Zasláno: 3. 3. 2012, 22:48:52
Reaguji na LosFilipose:
Nemusí. |
||
LosFilipos Profil |
#5 · Zasláno: 3. 3. 2012, 23:12:42
Chamurappi:
No mě to teda jinak než s innerText v IE nefungovalo... |
||
_es Profil |
#6 · Zasláno: 4. 3. 2012, 00:31:27
|
||
LosFilipos Profil |
#7 · Zasláno: 4. 3. 2012, 10:06:20
_es:
Díky moc, tohle funguje bezchybně. |
||
Časová prodleva: 3 dny
|
|||
Pavel Straka Profil |
#8 · Zasláno: 7. 3. 2012, 11:20:23
LosFilipos: Mohl bys prosím být tak hodný a poslat mi všechny soubory, co jsou k tomuto třeba?
Kromě select.php je to jen ajax_load.php ? Děkuji |
||
LosFilipos Profil |
Pavel Straka:
V profilu nemáš žádný kontakt, takže to píšu sem... Ajax_load.php obsahuje výstup z databáze do pole, které je na konci vypsáno funkcí json_encode - toť vše: <?php include('./db.php'); // připojení k db $query = mysql_query(" ... výběr prvků selectu ..."); $return = array(); while($result = mysql_fetch_array($query)) { $return[] = array("value"=>$result['value'],"text"=>$result['text']); } echo json_encode($return); exit(); ?> |
||
Časová prodleva: 1 rok
|
|||
Helmy Profil |
#10 · Zasláno: 14. 7. 2013, 13:10:12 · Upravil/a: Helmy
Zdravím mohl by někdo prosím poslat ukázku ze selectu?
Jde o to že mám tabulku ve které mam kraje a druhou tabulku kde mám obce. A chci aby se podle options okresy načetly v dalším options obce podle zvoleného okresu. Problém je že v js skoro nic neumím a v php už se nějaký ten měsíč učím. Tak bych prosím vás potřeboval názornou ukázku. Díky Chtěl jsem napsat: Jde o to že mám tabulku ve které mam okresy a druhou tabulku kde mám obce. |
||
LosFilipos Profil |
#11 · Zasláno: 15. 7. 2013, 09:45:27
Zdravím všechny,
všechno potřebné pro zprovoznění dané problematiky jsem shromáždil na této stránce. Good luck! |
||
Časová prodleva: 1 rok
|
|||
Btihin Profil * |
#12 · Zasláno: 5. 11. 2014, 16:00:34
LosFilipos:
Ahoj dík za super návod, ale potřeboval bych si ověřit funkčnost.(jestli jsem to pochopil správně) Kdybych chtěl do druhého selectu načítat data která patří do prvního selectu tak to bude vypadat takhle? soubor php <select id="jedna" onchange="ajax_load_options(this.value);"> <option>vyberte</option> <?php require ("mssql.php"); $query1 = mssql_query("SELECT ID_Dodavatel, CAST(Nazev AS TEXT) AS Nazev FROM T_Dodavatel ORDER BY CAST(Nazev AS CHAR)"); while ($result1 = mssql_fetch_assoc($query1)) { echo "<option value='" . $result1['ID_Dodavatele'] . "'>" . $result1['Nazev'] . "</option>"; } ?> </select> <select id="dva"> <option>vyberte první select</option> </select> první select Dodavatel vybere dejme tomu ID 1 takže pošle JSONem "1" do souboru load v $_GET['data'] a pak můžu vyselectovat jen smlouvy s ID_Dodavatel = 1? load soubor <?php require('mssql.php'); //načtení db $sml = mssql_query('SELECT ID_Smlouva, Nazev_smlouvy FROM T_Smlouva WHERE ID_Dodavatel = "' . $_GET['data'] . '"');//výběr prvků selectu $return = array(); while($result = mssql_fetch_assoc($sml)) { $return[] = array("value"=>$result['ID_Smlouva'],"text"=>$result['Nazev_smlouvy']); } echo json_encode($return); exit(); ?> |
||
Časová prodleva: 10 let
|
0