Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Отметить все нужные radio в форме одним кликом
Форумы портала PHP.SU » Клиентская разработка » JavaScript & VBScript » Отметить все нужные radio в форме одним кликом

Страниц (1): [1]
 

1. AlexGreF - 02 Мая, 2010 - 07:15:15 - перейти к сообщению
Есть такая форма:
CODE (html):
скопировать код в буфер обмена
  1.  
  2.  
  3. <form action="?act" method="POST">
  4. <input type="radio" name="nmoney_sel_all" value="1" id="money_1sel" checked onClick="set_all(1);"> $ <br>
  5. <input type="radio" name="nmoney_sel_all" value="2" id="money_2sel" onClick="set_all(2);"> Евро <br>
  6. <input type="radio" name="nmoney_sel_all" value="3" id="money_3sel" onClick="set_all(3);"> руб.<br>
  7.  
  8. <br><br>
  9.  
  10. while($dt = mysql_fetch_array($result)){
  11.   Объявление <?=$dt['id']?>:<br>
  12.   <input type="radio" name="nmoney_sel[<?=$dt['id']?>]" value="1" id="money_1sel<?=$dt['id']?>" checked> $ <br>
  13.   <input type="radio" name="nmoney_sel[<?=$dt['id']?>]" value="2" id="money_2sel<?=$dt['id']?>"> Евро <br>
  14.   <input type="radio" name="nmoney_sel[<?=$dt['id']?>]" value="3" id="money_3sel<?=$dt['id']?>"> руб.<br>
  15. }
  16.  
  17. <br><br></form>
  18.  


Как видите, в начале формы есть три radio-переключателя, и ниже ещё множество переключателей по три штуки в одном объявлении. $dt['id'] принимает разные значения(цифровые). Нужно чтобы при переключении верхних radio автоматически и переключались все нижние в то же положение. Например если вверху поставить Radio в евро, то и все остальные radio переключились на евро. Ну то есть нужно написать функцию set_all (Вызывается при клике на верхних переключателях).
2. AlexGreF - 02 Мая, 2010 - 11:08:18 - перейти к сообщению
Разобрался сам уже.. На jquery..
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. function set_all(num){
  3.         $("form input:radio[id^='money_"+num+"sel']").attr("checked","checked");
  4. }
  5.  
3. JustUserR - 02 Мая, 2010 - 11:50:07 - перейти к сообщению
AlexGreF пишет:
Разобрался сам уже.. На jquery..
И ради выделения группы флажков пользователю придется скачивать большущий JS-файл с данным фреймворком
Конечно же на самом деле все решалось гораздо проще
CODE (javascript):
скопировать код в буфер обмена
  1. document.onclick=function(ev)
  2. {var elm=(ev) ? ev.srcElement : event.srcElement
  3. if((elm.tagName)&&(elm.tagName.toUpperCase=="INPUT")&&
  4. (elm.type)&&(elm.type.toUpperCase=="RADIO"))
  5. {var res_num=-1; for(var i=0;i<elm.length;i++)
  6. {if(elm[i].checked) {res_num=i} else {}  }
  7. // Здесь выделяете все res_num-ные флажки которые нужны при выборе данного флажка
  8. }
  9. else {}
  10. }
4. AlexGreF - 02 Мая, 2010 - 22:02:10 - перейти к сообщению
JustUserR пишет:
И ради выделения группы флажков пользователю придется скачивать большущий JS-файл с данным фреймворком


Всё равно на сайте используется этот фреймворк(для других целей), весит 55.9кб. Поэтому и сделал на нём, так проще..
5. JustUserR - 03 Мая, 2010 - 02:07:42 - перейти к сообщению
AlexGreF пишет:
Всё равно на сайте используется этот фреймворк(для других целей), весит 55.9кб. Поэтому и сделал на нём, так проще..
Может быть это проще и по объему JS-файла фреймвра не так много - но реальная производительность особенно при большом числе элементов на странице будет падать
Дело в том что обработка событий и доступ к элементам уже не является JS-нативным и соответственно требует больше ресурсов - аналогично как обработка on_event для каждого из элементов в DOM-моделе более долгая чем шаблонная обработка в общем обработчике события типа document.on_event*

 

Powered by ExBB FM 1.0 RC1