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
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
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
Chamurappi:
Středník není povinný.
To já vím ale je to lepší... Je to takový kladný zlozvyk
TomasJ
Profil
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
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
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
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
tam chci, jelikoš to chci zapisovat do nového okna. Ale stejně děkuji za za zmínění innerHtml a změny v aktuálním okně.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0