Autor Zpráva
nethor
Profil
Prosím poraďte, jak lze přepnout input type="radio" pomocí JavaScriptu.
(Řeším hromadné přepínáníhodnot ve formuláři.)
Zkoušel jsem to podobně, jako to funguje u checkboxu:
(příklad:)
<input type="radio" name="ts" id="ts" value="a"> a<br>
<input type="radio" name="ts" id="ts" value="b"> b<br>

<b onclick="document.getElementById('ts[0]').checked = '1';">test a</b>
<b onclick="document.getElementById('ts[1]').checked = '1';">test b</b>

ale u type="radio" se mi to nedaří.

Předem díky.
Jan Tvrdík
Profil
nethor:
Zkus selected. (Tak jsem to netipnul, no :)
Chamurappi
Profil
Reaguji na nethora:
Dej každému <input>u jiné ID. Nemusí být stejné jako name.
Mimochodem, vlastnost „checked“ nabývá hodnot true a false, nikoliv "1" (ačkoliv to při nastavování zaškrtnutí funguje).


Reaguji na Jana Tvrdíka:
To ne.
Str4wberry
Profil
Na uvedený příklad by, myslím, stačil <label>, nethore.
nethor
Profil
Chamurappi
Bezva.
To funguje, díky.
Chamurappi
Profil
Reaguji na nethora:
Ale zamysli se i nad tím <label>em, je to dobrý nápad.
nethor
Profil
Label je dobrý nápad, ale v mém případě nelze použít.
Řeším hromadné zaškrtávání 18 / 21 , kde je cca 20řádků.
Přiklad jsem zjednodušil, ve skutečnosti vypadá kod nějak takhle:
<form action="test.html" method="post">
zatrhni <label for="tst18"> 18</label> <label for="tst21"> 21</label>	<br>
<input type="radio" name="tst[0]"  value="18"> 18  <input type="radio" name="tst[0]" value="21"> 21<br>
<input type="radio" name="tst[1]"  value="18"> 18  <input type="radio" name="tst[1]" value="21"> 21<br>
<input type="radio" name="tst[2]"  value="18"> 18  <input type="radio" name="tst[2]" value="21"> 21<br>
<!-- atd...  -->
</form>


Jedním LABELem asi nejde ovládat více inputů.
A více stejných id použít nelze.

<form action="test.html" method="post">
zatrhni <label for="tst18"> 18</label> <label for="tst21"> 21</label>	<br>
<input type="radio" name="tst[0]" id="tst18" value="18"> 18  <input type="radio" name="tst[0]" id="tst21" value="21"> 21<br>
<input type="radio" name="tst[1]" id="tst18" value="18"> 18  <input type="radio" name="tst[1]" id="tst21" value="21"> 21<br>
<!-- atd...  -->
</form>



Ale přes ten JavaScript to už funguje přesně, jak potřebuji.
Díky za pomoc.
Str4wberry
Profil
Jedním LABELem asi nejde ovládat více inputů.
V některých prohlížečích můžeš zanořit více <label>ů do sebe — potom jich ovládají více. Ale, jak jsem řekl, ne ve všech prohlížečích.

Ale zauvažoval bych o projití <input>ů cyklem, což se mi zdá, že neděláš.
nethor
Profil
Vyřešil jsem to JavaScriptem.
Funguje to, problém vyřešen.

function tlamel(tl,pocet)
	{		
	for(i=1; i <= pocet ; i++) 	
		{
		document.getElementById("tl_lamel"+tl+"["+i+"]").checked = true;
		}
	}

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: