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 слой так как находятся в разных разделах
но тогда скрипт отрабатывает только по первому встретившемуся слою
как сделать так чтобы он работал по всем одинаковым слоям?

theYozh 27.12.2008 15:11

Pishu s telefona. vo-pervih id u kazhdogo div dolzhen bit unikalnim. delaesh neskolko div s raznimi id i dobavlyaesh dlya kazdogo obrabotchik. vot i vsё

skinny 27.12.2008 20:06

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

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

theYozh 28.12.2008 14:10

Пользуйся innerHTML

D0M!N!C 19.05.2009 14:48

Народ помогите! есть 2 радиобатона и на каждом висит по полю ввода. необходимо в зависимости от ввода активизировать соответствующий батон...

Gvozd 19.05.2009 15:10

событие onchange текстового элемента и свойство checked радиокнопок
по событию делаете проверку, и выставляете в checked необходимый элемент

D0M!N!C 21.05.2009 06:51

да благодарю!!! уже нашел выход!

smacker 02.10.2009 19:07

народ, нужна помощь!! у меня с радиокнопками беда, вобщем у меня на страничке 6 групп радиокнопок, притом при одном положении одной из групп невозможен один из вариантов другой группы, с помощью <div> сделал чтобы исчезал и появлялся возможный вариант, но появился другой баг, если кнопка в момент замены была выбрана, то визуально получается, что ни одна из кнопок не выбрана, как сделать так, чтобы она в момент замены передавала значени checked той кнопке что появляется?

x-yuri 02.10.2009 20:19

А можно это как-то поподробнее и с цветными картинками, а то я не уверен, что я правильно понимаю сказанное (с)

Цитата:

Сообщение от smacker
с помощью <div> сделал чтобы исчезал и появлялся возможный вариант

нормальное решение: показывать/скрывать радиокнопку (style.display)

smacker 03.10.2009 00:07

я так и сделал, только поместив кнопку в тэг <div> и использовал style.display, но проблема не в том, у меня когда исчезает одна из радиокнопок, если она была выбрана, то выбор так и остается на ней, хотя визуально ее и нет. Так вот, мне нужно сделать так, чтобы при ее исчезновении выбор автоматически перемещался на одну из видимых... воть, всю голову сломал, помогите люди добрые)

x-yuri 03.10.2009 08:05

кстати, зачем скрывать? Сделай disable

smacker 03.10.2009 13:28

я просто делаю считалку стоимости шкафа по ввыбранным параметрам, и при одной ширине возможно два варианта глубины, а при другой один из них становится невозможен, и появляется другой возможный. Я сделал так чтобы при онклике на ширину они визуально просто меняются, но та которая исчезает(если до этого была выбранным вариантом) оставаясь невидимой остается выбранной, и если юзер ее не нажмет - рушится механизм подсчета, я хочу сделать так, чтобы в момент исчезновения кнопки она передавала свою значение(а именно то что она выбрана) той кнопке которая стала видимой. Вобщем в тестовом режиме прога висит тут: www.smacker866.1gb.ru гляньте на этот баг, и если можно что нить подскажите, заранее всем признателен за участие)

smacker 03.10.2009 13:38

млин, адрес неправильно дал) http://smacker866-ru.1gb.ru/ вот правильный.

smacker 03.10.2009 13:39

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

smacker 03.10.2009 15:02

все, нашел решение, спасибо за интерес проявленый ко мне

x-yuri 03.10.2009 15:15

я бы предложил показать все 3, причем одну из них disable'ить. И подписать, для 500 (при ширине >= 1800 мм), а для 450 (при ширине <= 1500 мм)

smacker 09.10.2009 15:24

спасибо x-yuri, меня еще прикололи. что глубина 500 оказывается была не нужна, так как то была всего навсего опечаточка. Теперь появились следующие проблемы, человек которому делаю прогу хочет чтобы результат пхпшного подсчета выводился в новом маленьком окошке, не уходя с главной страницы... реально это или нет? если да подскажите дилетанту как это мона сделать?

x-yuri 09.10.2009 17:08

а что тебе не хватает? Не знаешь, как окно открыть? Если считает php, то поставь форме target="_blank", чтобы php туда считал

smacker 10.10.2009 14:12

а где именно?))напиши пожалст примерный код, чтоб я понял куда его прописывать

smacker 10.10.2009 14:13

извиняюсь, туго думаю, спс

smacker 10.10.2009 15:27

теперь такой вопрос, а как сделать так, чтобы у открывающегося окна не было тулбара строки состояния и тд и тп?

e1f 12.10.2009 14:06

http://tinyurl.com/yzbgcth

x-yuri 12.10.2009 19:54

google://window.open
UPD: не заметил, что уже ответили


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