radio кнопки и input type="hidden"

Тема в разделе "Актуально, только не в тему", создана пользователем DKraev, 22.06.2011.

  1. DKraev
    Offline

    DKraev <i>(aka gft)</i>

    Регистрация:
    16.08.2008
    Сообщения:
    1 627
    Симпатии:
    216
    Пол:
    Мужской
    Здравствуйте.
    Прошу совета у специалистов по формам.

    Делаю сортировку товаров по параметрам. Нужно сделать так, чтобы в форме присутствовали три radio кнопки. Они служат для сортировки товаров по стоимости.

    Как это должно выглядеть на скрине во сложении.

    Я довольно слабо разбираюсь в формах, но понимаю, что нужно передать два значения - "от" и "до". Для этого создаём input type="hidden"

    Для одного значения код выглядит так:

    Код (PHP):
    1. $html .='<li>';
    2.                             $html .='<input type="hidden" name="pr_from" value="0" id="price_1"/>';
    3.                             $html .='<input type="hidden" name="pr_to" value="50000" id="price_1" />';
    4.                             $html .='<input name="price" name="ddd" id="price_1" class="chk" type="radio" />';
    5.                             $html .='<label for="price_1">0 - 50 000 руб.</label>';
    6.                         $html .='</li>';
    При выборе данного radio всё работает. Смотрю в firebug и вижу что значения "от" и "до" успешно переданы:

    Код (CODE):
    1. params[Forme][]false
    2. params[metall][]false
    3. params[naznachenie][]false
    4. params[oblitc][]false
    5. params[vysota][]false
    6. placeright
    7. pr_from 0
    8. pr_to 50000
    9. price on
    10. prod_type 1


    Добавляем остальные поля:

    Код (PHP):
    1. $not_string = 'Не важно';
    2.                         $html .='<li>';
    3.                             $html .='<input type="hidden" name="pr_from" value="0" id="price_0"/>';
    4.                             $html .='<input type="hidden" name="pr_to" value="9999999" id="price_0" />';
    5.                             $html .='<input name="price" name="ddd" class="chk" type="radio" checked="checked" id="price_0" />';
    6.                             $html .='<label for="price_0">'.$not_string.'</label>';
    7.                         $html .='</li>';
    8.                        
    9.                         $html .='<li>';
    10.                             $html .='<input type="hidden" name="pr_from" value="0" id="price_1"/>';
    11.                             $html .='<input type="hidden" name="pr_to" value="50000" id="price_1" />';
    12.                             $html .='<input name="price" name="ddd" id="price_1" class="chk" type="radio" />';
    13.                             $html .='<label for="price_1">0 - 50 000 руб.</label>';
    14.                         $html .='</li>';
    15.                    
    16.                         $html .='<li>';
    17.                             $html .='<input type="hidden" name="pr_from" value="0" id="price_2"/>';
    18.                             $html .='<input type="hidden" name="pr_to" value="100000" id="price_2" />';
    19.                             $html .='<input name="price" name="ddd" id="price_2" class="chk" type="radio" />';
    20.                             $html .='<label for="price_2">0 - 100 000 руб.</label>';
    21.                         $html .='</li>';


    И вот тут закавыка. При клике по разным кнопкам, значения не меняются. Отсматриваю в firebug и вижу что значения "от" и "до" переданы три раза:

    Код (CODE):
    1. params[Forme][]false
    2.  params[metall][]false
    3.  params[naznachenie][]false
    4.  params[oblitc][]false
    5.  params[vysota][]false
    6.  placeright
    7.  pr_from 0
    8. pr_from 0
    9. pr_from 0
    10.  pr_to 50000
    11. pr_to 100000
    12. pr_to 9999999
    13.  price on
    14. prod_type 1


    Естественно, что ничего не работает. Что делаю неправильно? Как удалить предыдущие значения и передать новые? Расписывать не надо, просто, если кто знает, подтолкните в нужном направлении, пожалуйста. Искал в гугле - не нашёл ничего вменяемого...
     

    Вложения:

  2.  
  3. woojin
    Offline

    woojin Местный Команда форума

    Регистрация:
    31.05.2009
    Сообщения:
    3 209
    Симпатии:
    335
    Пол:
    Мужской
    передавай только одно значение
    у тебя же всё начинается с нуля, так и передавай только значания 50т.р. или 100т.р.
    и я вот не понял а нафига скрытые поля когда можно по переданному значению из RADIO сделать все необходимые действия, ведь в INPUT RADIO ни кто не отменял атрибут VALUE!!!!!!!
     
  4. DKraev
    Offline

    DKraev <i>(aka gft)</i>

    Регистрация:
    16.08.2008
    Сообщения:
    1 627
    Симпатии:
    216
    Пол:
    Мужской
    Не, это блин я в коде не указал. Значение первое конечно будет отличаться, иначе какой смысл в данной сортировке...

    Первый - выводит все товары
    Второй - от 0 до 50 000
    Третий - от 50 000 до 100 000

    А в value не передашь два значения.
     
  5. woojin
    Offline

    woojin Местный Команда форума

    Регистрация:
    31.05.2009
    Сообщения:
    3 209
    Симпатии:
    335
    Пол:
    Мужской
    ну тебе всё равно лучше передавать только один параметр
    к примеру просто выбранный RADIO, т.е. к примеру первый у тебя равен 0 передавай цифру 1
    второй равен 0-50 передавай 2
    третий равен 0-100 передавай 3
    а уже в коде обработки отправленных параметров подставляй необходимые данные

    я бы именно так и сделал
     
    DKraev нравится это.
  6. DKraev
    Offline

    DKraev <i>(aka gft)</i>

    Регистрация:
    16.08.2008
    Сообщения:
    1 627
    Симпатии:
    216
    Пол:
    Мужской
    Спасибо, woojin, светлая твоя голова. Прописал onclick, всё работает!

    Код (PHP):
    1. $not_string = 'Не важно';
    2. $html .='<li>';
    3.     $html .='<input name="price" class="chk" type="radio" value="9999999" checked="checked" id="price_0" onClick="document.getElementById(\'pr_to\').value=this.value;document.getElementById(\'pr_from\').value=\'0\'"/>';
    4.     $html .='<label for="price_0">'.$not_string.'</label>';
    5. $html .='</li>';
    6.  
    7. $html .='<li>';
    8.     $html .='<input name="price" value="50000" id="price_1" class="chk" type="radio" onClick="document.getElementById(\'pr_to\').value=this.value;document.getElementById(\'pr_from\').value=\'0\'" />';
    9.     $html .='<label for="price_1">0 - 50 000 руб.</label>';
    10. $html .='</li>';
    11.  
    12. $html .='<li>';
    13.     $html .='<input type="hidden" name="pr_from" value="" id="pr_from"/>';
    14.     $html .='<input type="hidden" name="pr_to" value="" id="pr_to" />';
    15.     $html .='<input name="price" value="100000" id="price_1" class="chk" type="radio" onClick="document.getElementById(\'pr_to\').value=this.value;document.getElementById(\'pr_from\').value=\'50000\'" />';
    16.     $html .='<label for="price_1">50 000 - 100 000 руб.</label>';
    17. $html .='</li>';
     
  7. woojin
    Offline

    woojin Местный Команда форума

    Регистрация:
    31.05.2009
    Сообщения:
    3 209
    Симпатии:
    335
    Пол:
    Мужской
    да всегда пожалуйста ;)
    обращайся :spiteful:
     

Поделиться этой страницей

Загрузка...