Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Радиокнопки (https://javascript.ru/forum/dom-window/2436-radioknopki.html)

theYozh 25.12.2008 11:57

Радиокнопки
 
Всем привет.
Столкнулся с проблемой:
Есть форма с группой радиокнопок
<form name="datasend"   ...bla-bla-bla... >
<input type="radio" name="drawby" value="points" />
<input type="radio" name="drawby" value="lines" />
<input type="radio" name="drawby" value="all" />

И есть необходимость получить в js значение выбранной кнопки (drawby)
Например: drawby=points или drawby=lines или all...

Пытался обратиться через DOM
document.datasend.drawby.value

-дает результат underfined

Помогите

theYozh 25.12.2008 18:24

нашел решение:
Код:

function radiocheck() {
var currentradio;
currentradio='all';
if (document.datasend.drawby[0].checked) {
currentradio='points';
}
if (document.datasend.drawby[1].checked) {
currentradio='lines';
}
if (document.datasend.drawby[2].checked) {
currentradio='all';
}
}


skinny 25.12.2008 22:55

сделал всё как ты написал у меня ничо не работает
мне нужно при загрузке страницы проверить которая из кнопок сейчас выбрана

theYozh 26.12.2008 17:08

Мне это нужно было для АЯКСа и в функции АЯКСа я просто добавил вызов ф-ции radiocheck(); которая была объявлена до этого. А если ее не вызывать, то естественно она работать не будет.

Kolyaj 26.12.2008 17:12

Цитата:

Сообщение от skinny
мне нужно при загрузке страницы проверить которая из кнопок сейчас выбрана

А че при загрузке проверять-то? Какие проставил, те и выбраны.

theYozh 26.12.2008 19:17

Дополнение:
Если боишься пропустить событие, то добавь в каждый <input type="radio" ...bla-bla-bla.. /> строчку:
onChange="radiocheck();"

Чтоб так выглядело:
<input type="radio" onChange="radiocheck();" ...bla-bla-bla.. />

skinny 26.12.2008 20:34

спасибо попробую

skinny 26.12.2008 20:49

Проблема заключается в следующем:
на страничке несколько радиокнопок. При выборе одной из них нужно сделать некую группу элементов невидимыми а остальные видимыми. Для примера: в зависимости от выбранного пола предлагается заполнить разные пункты анкеты. Не трудно скрыть или отобразить их при нажатии, но данные сохраняються в БД. Поэтому нужно выставить потом так чтобы перезагрузки страницы и обновления радиокнопок скрытые элеметы не появились.
я хорошо знаю php, но вот яваскрипт пока тока начал изучать, так что буду премного признателен за дельный совет.

на данный момент попробовал всё о чём говорилось, но при обновлении странички ничего не происходит.

theYozh 27.12.2008 11:51

Не понял в этом месте:
Цитата:

потом так чтобы перезагрузки страницы
Но попробую помочь с тем что есть, как понял...
Твоя анкета:
<form name="datasend" action="php.php" method="post">
Ваш пол:<br />
<input type="radio" name="gender" value="male" 
onSelect="
document.getElementById('for_male').style.display='block';
document.getElementById('for_female').style.display='none';
"/>Мужской<br />

<input type="radio" name="gender" value="female" 
onSelect="
document.getElementById('for_male').style.display='none';
document.getElementById('for_female').style.display='block';
"/>Женский<br />

<div id="for_male" style="display:none;">
<!-- Здесь элементы формы для мужчины -->
</div>

<div id="for_female" style="display:none;">
<!-- Здесь элементы формы для женщины -->
</div>
<input type="submit" value="Поехали!" />
</form>


PHP тогда будет выглядеть примерно так:
$gender=$_POST['gender'];
switch ($gender) {
	case 'male':
		/* операции для мужского пола */
		break;
	case 'female':
		/* опреации для женского пола */
		break;
	default:
		/* опрации на случай если пол был не указан, 
или указан не правильно. 
Несмотря на радио кнопки такое бывает, 
например если сайт обслуживает 
несколько рабочих станций. 
Кто знает как там запрограммировали 
рабочую станцию, мы лучше подстрахуемся. */
		break;
}


Вот так. Спрашивай, может чего не ясно?

skinny 27.12.2008 12:26

всё разобрался и всё заработало
добавил событие
Код:

onChange="radiocheck();"
в тег
Код:

<body>
вот так
Код:

<body onChange="radiocheck();" >
Теперь возникла другая проблема

если слоёв больше одного то пропадает только 1

например есть в анкете несколько свойств они не могут быть объединены в 1 слой так как находятся в разных разделах
но тогда скрипт отрабатывает только по первому встретившемуся слою
как сделать так чтобы он работал по всем одинаковым слоям?


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