За последние 24 часа нас посетили 19324 программиста и 1625 роботов. Сейчас ищут 963 программиста ...

Друзья, подскажите еще по радиокнопки+селект (продолжение)

Тема в разделе "PHP для новичков", создана пользователем A.B.C., 28 окт 2010.

  1. A.B.C.

    A.B.C. Активный пользователь

    С нами с:
    3 мар 2010
    Сообщения:
    109
    Симпатии:
    0
    Задача такая, есть радиокнопка и два варианта к ней, ниже стоят 3 джамп меню...т.е. всплывающих списка, которые при выборе сразу прыгают по ссылке и передают переменные.
    Юзер выбирает свой вариант кнопки, а затем выбирает в меню нужный пункт и две переменных тут же летят в исполняющий скрипт. Но скрипт робит только если меню одно!!! Если их два или 3 то уже все...он запоминает как я понимаю последнее имя селекта и работает только с ним:

    [css]<script type="text/JavaScript">
    <!--
    function MM_jumpMenu(targ,selObj,restore){ //v3.0
    eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
    if (restore) selObj.selectedIndex=0;
    }[/css]
    //-->
    </script>
    </head>

    <body>
    PHP:
    1. <?php if (isset($_POST['smok'])) {print "Курит?".$_POST['smok'];}?>
    2. <?php if (isset($_POST['menu1'])) {print "Возраст?".$_POST['menu1'];}?>
    HTML:
    1. <form name="sd"  method="POST" action="1.php">
    2. Вы курите?
    3. <input name="smok" type="radio" value="Да" checked="checked">Да
    4. <input name="smok" type="radio" value="Нет">Нет
    5. <br>
    6. <select  name="menu1"   onChange="this.form.submit();">
    7. <option value="T=1">Вы женщина и вам до 30 лет</option>
    8. <option value="T=2">Вы женщина и вам от 30 лет до 60</option>
    9. <option value="T=3">Вы женщина и вам больше 60 лет </option>
    10. <br>
    11. <select  name="menu1"   onChange="this.form.submit();">
    12. <option value="T=4">Вы мужчина и вам до 30 лет</option>
    13. <option value="T=5">Вы мужчина и вам от 30 лет до 60</option>
    14. <option value="T=6">Вы мужчина и вам больше 60 лет </option>
    15. <br>
    16. <select  name="menu2"   onChange="this.form.submit();">
    17. <option value="T=7">Вы подросток и вам младше 10 лет</option>
    18. <option value="T=8">Вы подросток и вам от 10 до 14 лет </option>
    19. <option value="T=9">Вы подросток и вам от 14 до 18 лет </option>
    20. </form>
     
  2. ekip

    ekip Активный пользователь

    С нами с:
    11 авг 2009
    Сообщения:
    118
    Симпатии:
    0
    A.B.C. уже не помню точно, я когда то нечто подобное делал, но по логике ты по событию
    onChange="this.form.submit();" вызываешь просто одну и ту же функцию в конструкции яваскрипта должны быть объекты и должны они быть уникальными "N", и соотвественно для каждого из селекта должно передаваться уникальное значение (имя) onChange="this.form.submit(N); если значений много то через запятую, вроде бы как то так...
     
  3. sDevAlex

    sDevAlex Активный пользователь

    С нами с:
    28 окт 2010
    Сообщения:
    53
    Симпатии:
    0
    Я туманно понял вашу задачу, но попробуйте назвать селекты так:
    Код (Text):
    1. <select name="menu[]" ...
    2. <select name="menu[]" ...
    3. <select name="menu[]" ...
    4. <select name="menu[]" ...
    В PHP:
    Код (Text):
    1. if(isset($_POST['menu']))
    2. {
    3.     foreach($_POST['menu'] as $menu)
    4.     {
    5.          //Обработка любого количества селектов...
    6.     }
    7. }
    Ещё раз скажу, туманно понял задачу, извини если написал не то...

    ekip,
    Ты сказал фигню, submit() отправляет форму, аналогично кнопке. Никаких параметров у неё нет.
     
  4. A.B.C.

    A.B.C. Активный пользователь

    С нами с:
    3 мар 2010
    Сообщения:
    109
    Симпатии:
    0
    sDevAlex
    Я примерно так и сделал, как вы предложили. Одна проблема приходит в обработсчик массив селектов из которых все пустые кроме одного - в котором был сделан выбор, приходится фильтровать лишнее, но ведь это время и ресурсы скрипта...вот я и думаю, как можно отправить единственый уникальный селект - запрос