Autor | Zpráva | ||
---|---|---|---|
Stepanka Profil * |
Ahoj,
prosím o pomoc. Mám jednu velice jednoduchou javascriptovou funkci, takovouto: (používám ji ve formuláři pro zadávání adresy) function prepni(){ if (document.getElementById("chk").checked==true) { document.getElementById("f0").style.display='inline'; document.getElementById("f1").style.display='inline'; document.getElementById("f2").style.display='inline'; document.getElementById("f3").style.display='inline'; document.getElementById("f4").style.display='inline'; document.getElementById("f5").style.display='inline'; document.getElementById("ulice_dod").style.display='inline'; document.getElementById("cislo_dod").style.display='inline'; document.getElementById("obec_dod").style.display='inline'; document.getElementById("psc_dod").style.display='inline'; document.getElementById("zeme_dod").style.display='inline'; document.getElementById("nazev_stat_fakturacni").disabled=false; document.getElementById("nazev_stat_dodaci").disabled=true; } else { document.getElementById("nazev_stat_fakturacni").value=document.getEle mentById("nazev_stat_dodaci").value; document.getElementById("f0").style.display='none'; document.getElementById("f1").style.display='none'; document.getElementById("f2").style.display='none'; document.getElementById("f3").style.display='none'; document.getElementById("f4").style.display='none'; document.getElementById("f5").style.display='none'; document.getElementById("ulice_dod").style.display='none'; document.getElementById("cislo_dod").style.display='none'; document.getElementById("obec_dod").style.display='none'; document.getElementById("psc_dod").style.display='none'; document.getElementById("zeme_dod").style.display='none'; document.getElementById("nazev_stat_fakturacni").disabled=true; document.getElementById("nazev_stat_dodaci").disabled=false; } } Jde o to, že při kliknutí na checkbox s ID="chk" se: objeví 4 nové textové inputy, objeví se disablovaný selectbox s ID="nazev_stat_dodaci" a původně disablovaný selectbox s ID="nazev_stat_fakturacni" se změní na editovatelný. Při odškrtnutí checkboxu se: 4 nové textové inputy schovají, schová se také disablovaný selectbox s ID="nazev_stat_dodaci" a selectbox s ID="nazev_stat_fakturacni" se změní na zpět needitovatelný. Funguje to úplně perfektně ve FF, ale v IE i v Opeře se ty selectboxy nemění. Prostě jsou oba pořád needitovatelné. Vím, že existuje Java konzola v IE, ale ta mi žádné chyby nehlásí (teda pokud se nepozná ještě jinak, než tak, že v levé doní části je žlutý trojúhelník, ten tam totiž nemám, mám zobrazen jen nápis Hotovo). Nevíte někdo, jak bych mohla zjistit, co je v té funkci špatně? Děkuju moc. |
||
Chamurappi Profil |
#2 · Zasláno: 21. 11. 2008, 10:57:57
Reaguji na Stepanku:
„Vím, že existuje Java konzola v IE“ JavaScript a Java jsou dva naprosto odlišné jazyky, které mají akorát trochu podobnou syntaxi. „při kliknutí na checkbox s ID="chk" se […]“ Jak zjišťuješ ono kliknutí? Voláš „prepni()“ na onclick nebo na onchange? Spolehlivější je onclick. Pomohla by živá ukázka. |
||
Stepanka Profil * |
#3 · Zasláno: 21. 11. 2008, 11:19:03
Chamurappi
Děkuji za reakci. Nevím co si přesně představit pod pojmem "živá ukázka", ale hned přikládám skript, který je s tím Javascriptem spojený, čili jednu část formuláře: $query_stat = mysql_query("SELECT id_stat, $nazev_statu AS nazev FROM doprava_staty ORDER BY nazev") or die(mysql_error()); echo __STAT__.': '; echo '<select id="nazev_stat_fakturacni" name="nazev_stat_fakturacni" '; if (isset($_SESSION['obj']['nazev_stat_fakturacni']) AND !isset($_SESSION['obj']['nazev_stat_dodaci'])) echo "disabled"; echo '>'; echo '<option value="">'.__VYBER__.'</option>'; while ($row_stat=mysql_fetch_array($query_stat)) { echo '<option '; if (($_SESSION['obj']['nazev_stat_fakturacni'] == $row_stat['nazev']) OR (!isset($_SESSION['obj']['nazev_stat_fakturacni']) AND !isset($_SESSION['obj']['nazev_stat_dodaci']) AND $_SESSION['obj']['stat'] == $row_stat['nazev'])) echo ' selected="selected" '; echo ' value="'.$row_stat['nazev'].'">'.$row_stat['nazev'].'</option>'; } echo '</select>'; $check=''; $style='display:none'; if (isset($_SESSION['obj']['nazev_stat_dodaci'])) { $check='checked="checked"'; $style='display:inline'; } echo '<input name="dodaci_adr_jina" '.$check.' id="chk" onclick="prepni()" onload="prepni()" type="checkbox"> <label for="chk">'.__DODACI_JINA_NEZ_FAKTURACNI__.'</label><span id="f0" style="'.$style.'" class="chyba_form">'; if (isset($chyba['dodaci_adresa'])) echo $chyba['dodaci_adresa']; echo '</span> <div id="f1" style="'.$style.'">'.__ULICE__.':</div> <input style="'.$style.'" id="ulice_dod" type="text" name="ulice_dod" size="27" value="'.$ulice_dod.'" class="na" />'; echo '<div id="f2" style="'.$style.'"> '.__CISLO__.': </div><input style="'.$style.'" type="text" id="cislo_dod" name="cislo_dod" size="10" value="'.$cislo_dod.'" class="na" />'; echo '<div id="f3" style="'.$style.'">'.__MESTO__.':</div> <input style="'.$style.'" id="obec_dod" type="text" name="obec_dod" size="50" value="'.$obec_dod.'" class="na"/>'; echo '<div id="f4" style="'.$style.'">'.__PSC__.':</div> <input style="'.$style.'" id="psc_dod" type="text" name="psc_dod" size="50" value="'.$psc_dod.'" class="na"/>'; echo '<div id="f5" style="'.$style.'">'.__STAT__.':</div>'; echo '<div style="'.$style.'" id="zeme_dod">'; $query_stat = mysql_query("SELECT id_stat, $nazev_statu AS nazev FROM doprava_staty ORDER BY nazev") or die(mysql_error()); echo '<select id="nazev_stat_dodaci" name="nazev_stat_dodaci" disabled>'; echo '<option value="">'.__VYBER__.'</option>'; while ($row_stat=mysql_fetch_array($query_stat)) { echo '<option '; if ($_SESSION['obj']['id_stat'] == $row_stat['id_stat']) echo ' selected="selected" '; echo ' value="'.$row_stat['nazev'].'">'.$row_stat['nazev'].'</option>'; } echo '</select></div>'; Snažila jsem se to co nejvíce očistit od všech <td>, <tr> a podobných.. Mám ale takový pocit, že když se na ten kód podíváte, že mi asi nic neporadíte. Protože ve Firefoxu to běží skvěle, takže žádná větší chyba tam není. To spíš v té JS funkci bude nějaký kousek, který exploreru vadí. Ale nemůžu na něho přijít.. Neexistuje nějaký nástroj (třeba v IE, když tam mi to nejede), který by ten kód prošel a označil, co mu vadí, nebo čemu nerozumí? |
||
peta Profil |
#4 · Zasláno: 21. 11. 2008, 11:21:20
Stepanka
PHP kod nas nezajima, pouze HTML/CSS/JS. toto zobrazuje prohlizec, php zpracuje server. Cili odkaz na stranku. Coz jsem uvedl tez ve svem smazanem prispevku. |
||
Chamurappi Profil |
#5 · Zasláno: 21. 11. 2008, 11:32:52
Reaguji na Stepanku:
Živá ukázka je ukázka problému, která může žít a „problémovat“ i v mých prohlížečích. |
||
bohyn Profil |
#6 · Zasláno: 21. 11. 2008, 11:37:32
„Neexistuje nějaký nástroj (třeba v IE, když tam mi to nejede), který by ten kód prošel a označil, co mu vadí, nebo čemu nerozumí?“
Bohuzel pro IE neco takoveho neni, ale obcas muze pomoci debugbar nebo Internet Explorer Developer Toolbar Opera ma taky developer tools - dragonfly v Opere kdyz otevres chybovou konzoli tak bys mela videt kde je chyba |
||
Stepanka Profil * |
Chamurappi
Ok, děkuju, tak jestli bys mohl se kouknout například na stránku tuto.., vložit si cokoliv do košíku, přejít do košíku, vyber jakýkoliv stát, jakoukoliv platbu a ocitneš se na stránce objednavka-krok2.html. Zde je ten checkbox. Při jeho zaškrtnutí se musí ten horní needitovatelný select změnit na editovatelný.. Je to moje testovací verze, nemusíš se bát, že bys něco koupil :-) Moderátor Chamurappi: Na níže zmíněné přání jsem odmazal odkaz.
|
||
Stepanka Profil * |
#8 · Zasláno: 21. 11. 2008, 11:48:16
peta
Tvůj příspěvek jsem si stihla přečíst dřív, než byl smazán. Děkuju za snahu a za radu, ale i když jsem změnila document.getElementById('nazev_stat_fakturacni').disabled=true; na document.getElementById('nazev_stat_fakturacni').disabled="disabled"; , tak mi to dělalo to samé co předtím. Navíc nevím jak potom označit select za editovatelný... když dám například document.getElementById('nazev_stat_fakturacni').enabled="enabled"; (což je asi velká blbost :-) ) tak to nefunguje už ani ve Firefoxu.. |
||
Chamurappi Profil |
Reaguji na Stepanka:
Máš před <select>em v kódu i skrytý <input> s name="nazev_stat_fakturacni". Metoda document.getElementById funguje v Exploreru tak, že hledá i podle atributu name, ne jen podle id. Proto tento tvůj skript: document.getElementById("nazev_stat_fakturacni").disabled=false; Přejmenuj skrytý <input> a problém by měl zmizet. K petovi: „Tvůj příspěvek jsem si stihla přečíst dřív, než byl smazán.“ Omlouvám se, že jsem ho nestihl smazat dřív, peta zde ten svůj blud o disabled="disabled" šíří už dlouho a evidentně si ho nenechá vymluvit. Tvůj kód s „disabled = true“ a „checked == true“ byl samozřejmě správně. |
||
Stepanka Profil * |
#10 · Zasláno: 21. 11. 2008, 16:07:15
Chamurappi
Jéé děkuju, ono to fakt pomohlo :-) Akorát NAME inputu se mi měnit nechtělo, protože ho potom používám v celém kódu a to by bylo moc přepisování, ale změnila jsem ID jak v kódu, tak v té JS funkci a výsledej je stejný. Jsi moc hodný, fakt děkuju. PS: Mohl bys, prosím prosím, smazat ten můj příspěvek, ve kterém jsem uvedla ten odkaz? (je můj třetí od vrchu) Teda jestli nevadí a jestli můžeš. Díky. |
||
peta Profil |
#11 · Zasláno: 22. 11. 2008, 11:33:54 · Upravil/a: peta
Chamurappi
1. psal jsem o disabled, protoze to tak skutecne funguje spolehlive. Pokud nejaky prohlizec podporuje true je to spis jeho plus. blud? Davam prednost jistote nez novinkam v prohlizeci. 2. psal jsem o odkaz na stranku. blud? 3. popsal jsem, jak by mohla zjistit chybu, pokud se neukazuje zluty trojuhelnik. Je mozne, ze v tomto pripade by to nepomohlo, ale ptala se na to. blud? A pripomenme si tvuj prispevek, ktery resi vsechny otazky: 'JavaScript a Java jsou dva naprosto odlišné jazyky' co to vyresilo? 'Jak zjišťuješ ono kliknutí? Voláš „prepni()“ na onclick nebo na onchange? Spolehlivější je onclick. ' Neni to uplne stejne jako moje bludy o dissabled? 'Pomohla by živá ukázka.' A dalsi blud podobny memu. Uz vim, proc me prispevky zaslouzi smazat. Staci 1 chamurapi, 2 je moc. Pristup moderatoru tohoto fora mne v poslednich 2 mesicich fakt mrzi. Jedine plus, ze se ti chtelo vrtat v php kodu, ktery je zhlediska hledani chyb v podstate nepouzitelny. Nevim, jake ma sql tabulky a dalsi veci. Takze bych pulku veci musel dopsat, vydedukovat, tipovat, jestli select vrati, co by mel a jestli to ma vliv na JS. |
||
Chamurappi Profil |
#12 · Zasláno: 22. 11. 2008, 20:50:06
Reaguji na peta:
„psal jsem o disabled, protoze to tak skutecne funguje spolehlive.“ Nastavení hodnoty funguje spolehlivě, protože Boolean("") je false a Boolean("disabled") je true. Otestování hodnoty už samozřejmě nefunguje, protože pokud porovnáváš něco.checked == "checked", dostaneš false vždy. I když je zaškrtnuto. Vyzkoušej si to. „Pokud nejaky prohlizec podporuje true je to spis jeho plus. blud?“ Ano, blud. Každý tvůj příspěvek, který ho zopakuje, beru jako spam a je mojí povinností jej smazat. „Davam prednost jistote nez novinkam v prohlizeci.“ To, že tzv. „boolean atributy“ reflektují v DOMu vlastnosti mající boolean hodnoty, není žádná novinka. Tak to platí odjakživa ve všech prohlížečích znalých JS. Nastuduj si příklady na JPW. „popsal jsem, jak by mohla zjistit chybu, pokud se neukazuje zluty trojuhelnik“ Psal jsi doslova „nekdy je treba povolit odchytavani chyb v Nastaveni - zabezpeceni“, což mi připadá jako blud. „Neni to uplne stejne jako moje bludy o dissabled?“ Není. Vyzkoušej si, jak šlape onchange na zaškrtávátku v Exploreru. „Pristup moderatoru tohoto fora mne v poslednich 2 mesicich fakt mrzi.“ Jestli se ti tady nelíbí, tak sem nechoď. „Jedine plus, ze se ti chtelo vrtat v php kodu“ Chybu jsem našel při pohledu do HTML kódu stránky odkázané v příspěvku #7. Z ukázaného PHP skriptu vyčíst nešla. „Nevim, jake ma sql tabulky a dalsi veci.“ Nepotřebuješ vědět. |
||
Časová prodleva: 4 dny
|
|||
peta Profil |
#13 · Zasláno: 26. 11. 2008, 14:48:38
Chamurappi
Otestování hodnoty už samozřejmě nefunguje ... něco.checked == "checked" Protoze neumis javascript. Porovnava se === „popsal jsem, jak by mohla zjistit chybu, pokud se neukazuje zluty trojuhelnik“ Psal jsi doslova „nekdy je treba povolit odchytavani chyb v Nastaveni - zabezpeceni“, což mi připadá jako blud. ... myslet si muzes, co chces, ja to mam vyzkousene. Zkus se nekdy podivat do menu zabezpeceni po default instalaci a zkus otestovat tyhle scripty s chybami: * ajax GET/POST * casovac * nejaky normalni script * document.write Skoro bych se vsadil s tebou, ze ajax nebo casovac ti neukaze chybu, ikdyz chyba nastala, treba pri komunikaci pres post ... #7 Moderátor Chamurappi: Na níže zmíněné přání jsem odmazal odkaz. V prispevku 7 NENI, opakuji pro mene chapave, opravdu NENI zadny odkaz a v dobe kdy jsem se dostal ke cteni nebyl. Ci je to chyba? „Nevim, jake ma sql tabulky a dalsi veci.“ Nepotřebuješ vědět. ... Viz predchozi odstavec o odkazu na kod. Jestlize mas pouzit jeji PHP kod, potrebujes vedet vse, co se tyka zobrazeni stranky. Vcetne nastaveni PHP serveru, SQL tabulek a podobne. Jinymi slovy tohle tema muzes tedy klidne smazat cele. Jednak je problem vyresen a druhak , diky tvym upravam je pro ostatni problem neresitelny. Tolik, co mam proti zasahum moderatora. |
||
Chamurappi Profil |
#14 · Zasláno: 26. 11. 2008, 19:21:30 · Upravil/a: Chamurappi
Reaguji na peta:
„Protoze neumis javascript. Porovnava se ===“ Tři rovnítka mají oproti dvěma navíc jen typovou kontrolu. Vyrobil jsem ti názornou ukázku. Najdi mi prohlížeč, který se na ní chová jinak, než tvrdím. „... myslet si muzes, co chces, ja to mam vyzkousene.“ Bohužel ti to nevěřím. Mám tu ve virtuálních strojích k dispozici čistou instalaci Explorerů 5, 6, 7 a 8 beta, ve všech se při prvním spuštění bez jakéhokoliv zásahu do nastavení chyby ukazují. „ajax nebo casovac ti neukaze chybu, ikdyz chyba nastala, treba pri komunikaci pres post“ Nastane-li chyba při HTTP komunikaci, žádná javascriptová výjimka nevznikne. To nejde nijak ovlivnit v nastavení zabezpečení. „V prispevku 7 NENI, opakuji pro mene chapave, opravdu NENI zadny odkaz“ Všiml jsem si, že tam NENÍ. Možná to méně chápavé překvapuje, ale proto jsem ho odmazal, aby tam NEBYL. „v dobe kdy jsem se dostal ke cteni nebyl. Ci je to chyba?“ To přeci není chyba. Píšeš, že jsem lovil chybu v PHP kódu, já ti proto oznamuji (nehádám se), že jsem ji lovil z odkazu, který byl v příspěvku #7. Byl tam v době, kdy jsem odpovídal já, a nebyl tam v době, kdy jsi reagoval ty. Proč by to měla být něčí chyba? Bereš si všechno moc osobně. „Jednak je problem vyresen a druhak , diky tvym upravam je pro ostatni problem neresitelny.“ Řešení problému i jeho příčina tu napsané jsou. Kdybych odkaz nechal, čemu by to pomohlo? Vždyť na dané stránce už je závada opravená. |
||
Leo Profil |
#15 · Zasláno: 26. 11. 2008, 21:39:16
Nechcete nekdo spachat dobry trestny cin a petu zastrelit? Podstatne by se zvysil pomer signal/sum tohohle diskusniho fora, Leo
|
||
pеtа Profil * |
#16 · Zasláno: 28. 11. 2008, 17:31:40
Leo
google.com najemny vrah |
||
Chаmurаppi Profil * |
#17 · Zasláno: 28. 11. 2008, 17:39:53
Reaguji na pеtu:
Porušuješ pravidla stanovená pro peta: „Odkazuješ-li, použij skutečný odkaz, ne slovní popis.“ Znamenám si na seznam návrhů pro příští kouli: zakázat azbuku a jiné nečeskoslovenské paznaky. |
||
peta Profil * |
#18 · Zasláno: 29. 11. 2008, 12:19:13
A taky paznaky, které nejdou vidět.
|
||
Stepanka Profil * |
#19 · Zasláno: 29. 11. 2008, 20:00:02
peta
Peťo, to je náhoda, nebo nám děláš na škole správce? http://www.slu.cz/author/f_spravce |
||
Časová prodleva: 10 měsíců
|
|||
peta Profil |
#20 · Zasláno: 23. 9. 2009, 14:55:19 · Upravil/a: peta
Stepanka
peta (peta mezera nebo nbsp) a peta Člen (peta bez mezery) Jsou 2 rozdilne osoby. Ano, delam spravce webu FPF. |
||
peta Profil |
#21 · Zasláno: 23. 9. 2009, 14:57:44
OT
Chamurappi Nemuzu ted najit fora, ale prvak, druhak, tretak, ctvrtak, patak, sestak, sedmak, osmak jsou normalni ceska slova pro oznaceni osoby studujici urcity rocnik ZS :) |
||
pеtа Profil * |
#22 · Zasláno: 23. 9. 2009, 16:07:14
„prvak, druhak, tretak, ctvrtak, patak, sestak, sedmak, osmak jsou normalni ceska slova“
Tak je piš normálně česky, na cestinu nejsem zvedavy. |
||
Časová prodleva: 4 měsíce
|
|||
vospunt Profil |
#23 · Zasláno: 31. 1. 2010, 14:39:01
document.getElementById("nazev_stat_fakturacni").value=document.getEle mentById("nazev_stat_dodaci").value; mělo by to být document.getElementById("nazev_stat_fakturacni").value=document.getElementById("nazev_stat_dodaci").value; :D víc netuším :D |
||
Časová prodleva: 13 let
|
0