Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   выполнение ф-ии при изменении состояния radio (https://javascript.ru/forum/events/4107-vypolnenie-f-ii-pri-izmenenii-sostoyaniya-radio.html)

MaxB 24.06.2009 12:38

выполнение ф-ии при изменении состояния radio
 
Есть форма, состоящая из группы radio.
Как сделать что бы при изменении состояния radio выполнялась нужная ф-ия?
Пробовал onChange. Но тогда функция срабатывает только когда выбираешь данный radio. Когда же checked становится false функция не срабатывает. Т.е. мне нужно что бы при выборе другого radio тоже срабатывала функция, которая "висит" на первом radio.

Gvozd 24.06.2009 12:43

[telepatemod]
может быть стоит прописать всем радиокнопкам одинаковое имя?
[/telepatemod]

MaxB 24.06.2009 12:52

Цитата:

Сообщение от Gvozd (Сообщение 22759)
[telepatemod]
может быть стоит прописать всем радиокнопкам одинаковое имя?
[/telepatemod]

у всех name одинаковый

Gvozd 24.06.2009 13:13

повесить один и тот же обработчик
<head>
<title>Регистрация</title>
</head>
<body>
<form name='form1'>
<input type="radio" name="drink" value="rad1"> Пиво<Br>
<input type="radio" name="drink" value="rad2"> Чай<Br>
<input type="radio" name="drink" value="rad3"> Кофе
</form>
<script type="text/javascript">
radios=document.getElementsByName('drink');
var ch_radio=function()
	{
	console.log(this.value);
	}
for(var i=0;i<radios.length;i++)
	radios[i].onchange=ch_radio;
</script>

</body>

MaxB 24.06.2009 13:16

в том то и дело что мне нужно что бы ф-ия срабатывала только при изменении состояния первого radio

Gvozd 24.06.2009 13:24

<head>
<title>Регистрация</title>
</head>
<body>
<form name='form1'>
<input type="radio" name="drink" value="rad1"> Пиво<Br>
<input type="radio" name="drink" value="rad2"> Чай<Br>
<input type="radio" name="drink" value="rad3"> Кофе
</form>
<script type="text/javascript">
var radios=document.getElementsByName('drink');
var old_checked=null;
var ch_radio=function()
	{
	if(this.value==radios[0].value || old_checked==radios[0].value)
		{
		alert(radios[0].checked);
		}
	old_checked=this.value;
	}
for(var i=0;i<radios.length;i++)
	{
	radios[i].onchange=ch_radio;
	if(radios[i].checked)
		old_checked=radios[i].value;
	}
</script>

</body>

PS кстати, в опере onchange вызывается как для получения значения у радиокнопки, так и при потере
обработайте этот момент аккуратно


Часовой пояс GMT +3, время: 18:20.