Autor | Zpráva | ||
---|---|---|---|
HEAD Profil |
Ahoj, mám takévý problém s dobrým ovládáním polí radio javascriptem.
mam kód: <form id="formular"> <input type="radio" name="zatrhavani" checked="checked" value="1"> <input type="radio" name="zatrhavani" value="2"> <input type="radio" name="zatrhavani" value="3"> <input type="radio" name="zatrhavani" value="4"> <input type="button" value="Příprava k odeslání" onclick="kontrola()"> </form> <script type="javascript"> function kontrola(){ var neco = null; if (document.formular.zatrhavani[0].checked) {neco =document.formular.zatrhavani[0].value;return neco;} else if (document.formular.zatrhavani[1].checked) {neco =document.formular.zatrhavani[1].value;return neco;} else if (document.formular.zatrhavani[2].checked) {neco = document.formular.zatrhavani[2].value; return neco;} else {neco =document.formular.zatrhavani[3].value;return neco;} document.write(neco); } </script> A nechápu, proč to nefunguje... Jde o to že mám 4 inputy typu radio, všechny se jmenují zatrhavani. Po kliknutí na "Příprava k odeslání" se spustí funkce kontrola() a založí se proměnná neco . Potom podmínky zjišťují, jaký radio je vybráno a následně se proměnná změní podle zatržení a do proměnné se uloží hodnota value danného inputu. Zkoušel jsem to všelijak upravovat, ale nefunguje to pořád. Už nevím čím by to mohlo být, ale určitě to bude nějaká blbost... Fakt nevím...
Moderátor Chamurappi: Titulek „další problém s ovlánání radia javascriptem“ nevystihuje podstatu dotazu. Příště zkus prosím vymyslet lepší.
|
||
TomasJ Profil |
#2 · Zasláno: 3. 3. 2010, 19:47:44 · Upravil/a: TomasJ
HEAD:
Nejdřív by to chtělo trošku strukturovaný kód. K čemu je proměnná zatrhavani[0],[1],[2],[3] ? Možná by také bylo lepší místo type="button" dát type="submit" a onclick="funkce();" a také když už použít u <script> atribut type, tak type="text/javascript" Dále nechápu proč <form id="formular"> Tam má být spíš <form name="formular"> |
||
Chamurappi Profil |
#3 · Zasláno: 3. 3. 2010, 20:20:15
Reaguji na HEADa:
„nechápu, proč to nefunguje...“ „nefunguje to pořád“ Co kdybys příště lépe popsal to své „nefunguje“? Problém je určitě v tom, že voláš document.write z obsluhy události. Jakmile je stránka načtená, dokument je uzavřený a pokus o zápis do něj způsobí, že se založí nový dokument a píše se do něj. Asi chceš spíš měnit innerHTML nějakého existujícího elementu.
Reaguji na TomaseJ: „k čemu je proměnná zatrhavani[0],[1],[2],[3] ?“ Je to pole <input> ů s name="zatrhavani" .
„Možná by také bylo lepší místo type="button" dát type="submit"“ To vyjde nastejno. Kdyby použil type="submit", musel by přidat return false , pokud nechce, aby se formulář odeslal.
„a onclick="funkce();"“ Středník není povinný. „tam má být spíš <form name="formular">“ Má. S id to pojede jen v některých prohlížečích a někde jen v quirku.
|
||
TomasJ Profil |
#4 · Zasláno: 3. 3. 2010, 20:25:54
Chamurappi:
„Středník není povinný.“ To já vím ale je to lepší... Je to takový kladný zlozvyk |
||
TomasJ Profil |
#5 · Zasláno: 3. 3. 2010, 21:29:22 · Upravil/a: TomasJ
HEAD:
Mám řešení. Není to pomocí type="radio" ale <select> Tady je: <script type="text/javascript"> function kontrola(){ var neco = document.formular.zatrhavani.value; if(neco){document.getElementById("odpoved").innerHTML=neco;} else{document.getElementById("odpoved").innerHTML="Prazdna hodnota!";} } </script> <form name="formular"> <select name="zatrhavani"> <option value="1">Text 1</option> <option value="2">Text 2</option> <option value="3">Text 3</option> <option value="4">Text 4</option> </select> <input type="button" value="Odeslani" onclick="kontrola();"> </form> <span id="odpoved">Tady se objevi hodnota vybraneho textu po odeslani.</span> |
||
Chamurappi Profil |
#6 · Zasláno: 3. 3. 2010, 21:34:52
Reaguji na TomaseJ:
HEAD pravděpodobně nemá problém se zjištěním stavu <input>ů, ale s vypisováním toho, co zjistil — to si může z tvého skriptu půjčit, ale výměna za <select> není nutná.
|
||
TomasJ Profil |
#7 · Zasláno: 4. 3. 2010, 14:15:40 · Upravil/a: TomasJ
Chamurappi:
No to jo ale přes <select> je to jednodušší :) Na něco jsem přišel, ale zde není potřeba použít tlačítko(type="button"): <script type="text/javascript"> var globalni_neco = null; function kontrola(name){ globalni_neco = name; document.getElementById("odpoved").innerHTML = globalni_neco; } </script> <form name="formular"> <input type="radio" name="zatrhavani" value="1" onclick="kontrola(this.value);"> <input type="radio" name="zatrhavani" value="2" onclick="kontrola(this.value);"> <input type="radio" name="zatrhavani" value="3" onclick="kontrola(this.value);"> <input type="radio" name="zatrhavani" value="4" onclick="kontrola(this.value);"> </form> <span id="odpoved">Tady se objevi hodnota vybraneho textu po odeslani.</span> S touto proměnnou(globalni_neco) se dá dále pracovat v dalších funkcích. Funguje to tak, že po kliknutí na radio, se hned uloží hodnota radia do proměnné bez použití tlačítka(submit nebo button) |
||
HEAD Profil |
#8 · Zasláno: 4. 3. 2010, 21:40:21
dik funguje to.
Zlobylo to v IE prohlíži, kvůli tomu, že jsem u <form> měl nastavený identifikátor, ale ne jméno, to jsem přehlédl. (Asi proto že se dnes identifikátory upřednostňují). ps.: to document.write |
||
Časová prodleva: 14 let
|
0