Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: как узнать, что выбрано?
 
 автор: victoor   (07.03.2007 в 23:35)   письмо автору
 
 

Здравствуйте:
есть форма:

<form name="Start_search" action="" method=POST>
Искать по:<br />
<input type=radio name="search_param" value="ник" > нику<br />
<input type=radio name="search_param" value="клан" > клану<br />
<input type=button value='начать поиск' onClick="StartSearch();">
<form>


и обработчит этой формы (по нажатию на клавишу который работает:

  <script>
   function StartSearch()
     {
        switch (document.all.search_param.value)
          {
           case 'ник'    :  действие_1;   break;
           case 'клан'  :  действие_2;   break;
           default : alert('Что-то непонятное произошло... а что вы сделали? =)'); break;
          };
     };
  </script>

Я надеялся, что в значении document.all.search_param.value будет то, что выделенно в данный момент. но значение равно undefined

Как узнать, какой пункт выбран?

   
 
 автор: ddhvvn   (08.03.2007 в 10:09)   письмо автору
 
   для: victoor   (07.03.2007 в 23:35)
 

По идее так и должно быть...

   
 
 автор: victoor   (08.03.2007 в 15:29)   письмо автору
 
   для: ddhvvn   (08.03.2007 в 10:09)
 

но выводит именно undefined

   
 
 автор: CNT   (08.03.2007 в 15:46)   письмо автору
 
   для: victoor   (08.03.2007 в 15:29)
 

Всё правильно - до фактического сабмита формы значение value у группы радио-инпутов не определено, т.е. undefined

Надо циклом проверять весь список радио-инпутов на значение атрибута checked - при нахождении радио-инпута с checked==true смотреть его value и выходить из цикла брейком.
Ежели цикл завершается нормальным выходом (т.е. почеканный радио-инпут не найден), то тогда и включать алерт с сообщением "А чего вы сделали..."

   
 
 автор: victoor   (08.03.2007 в 15:54)   письмо автору
 
   для: CNT   (08.03.2007 в 15:46)
 

спасибо, вроде понял..

   
 
 автор: victoor   (09.03.2007 в 01:29)   письмо автору
 
   для: victoor   (08.03.2007 в 15:54)
 

Все решилось намного проще =) :

<form name="Start_search" action="" method=POST> 
Искать по:<br /> 
<input type=radio name="search_param" id="search_param1" value="ник" > нику<br /> 
<input type=radio name="search_param" id="search_param2" value="клан" > клану<br /> 
<input type=button value='начать поиск' onClick="StartSearch();"> 
<form> 

JavaScript работает по id, а не по name (если есть это самое id). А у передаваемого идет идентификация именно по name.

И можно просто смотреть checked по известным id (что проще, чем делать цикл) =)

Хотя... а не может это породить какие-нибудь проблемы в дальнейшем?

   
 
 автор: CNT   (09.03.2007 в 04:40)   письмо автору
 
   для: victoor   (09.03.2007 в 01:29)
 

JavaScript работает и по ID и по NAME: смотря какой метод выберете.
Если getElementById - то по ID, а если getElementsByName - то по NAME.

В вашем случае, чтобы не городить каждому элементу ещё и уникальный ID, можно воспользоваться методом getElementsByTagName ('INPUT'), т.е. циклом перебирать все инпуты, проверяя одновременно тип инпута и отметку. Приблизительно так:
for (var obj = document.forms.Start_search.getElementsByTagName ('INPUT'), j = k = 0; j < obj.length; j++)
   if (obj [j].type == 'radio' && obj [j].checked) {действие_зависимое_от_obj [j].value; k = 1; break}

if (k) alert ('А чегой-то вы тут наделали?');

   
 
 автор: victoor   (09.03.2007 в 12:03)   письмо автору
 
   для: CNT   (09.03.2007 в 04:40)
 

Спасибо.

Особенно спасибо за скрипт

   
 
 автор: ToNic   (26.07.2007 в 00:29)   письмо автору
 
   для: victoor   (09.03.2007 в 12:03)
 

Настоятельно не рекомендую использовать GetDocumentByName так как мне кажется что это не сработает в IE... Но я не уверен, возможно это я что-то перепутал. Но по-моему в IE не пашет...

   
 
 автор: CNT   (27.07.2007 в 16:33)   письмо автору
 
   для: ToNic   (26.07.2007 в 00:29)
 

GetDocumentByName действительно не стоит использовать. Ибо нигде он не работает.

Везде зато пашет getElementsByName, и даже в IE, начиная с версии 5.0
Особенно хорошо он пашет, если помнить, что getElementsByName - это массив и к каждому его элементу нужно обращаться, используя индекс в квадратных скобках.

Если имярек НЕ ИМЕЕТ ПОНЯТИЯ ни о первом (правильном названии метода), ни о втором (метод возвращает массив объектов с одинаковым именем, а не один объект с именем), то, разумеется, такому товарищу настоятельно не рекомендуется использовать этот метод.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования