За последние 24 часа нас посетили 20146 программистов и 1667 роботов. Сейчас ищут 1919 программистов ...

динамический селект vol.2

Тема в разделе "JavaScript и AJAX", создана пользователем sowelanes, 18 мар 2015.

  1. sowelanes

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

    С нами с:
    11 дек 2014
    Сообщения:
    101
    Симпатии:
    0
    В js не силен, да и в приведенных в данном разделе темах не совсем то, что мне нужно.

    в форме есть два селекта:

    Код (PHP):
    1. <form action="#" method="post">
    2. <select class="s1">
    3. <option value="1">option 1</option>
    4. <option value="2">option 2</option>
    5. <option value="3">option 3</option>
    6. </select>
    7. <select class="s2">
    8. <option value="1">option 1</option>
    9. <option value="2">option 2</option>
    10. <option value="3">option 3</option>
    11. <option value="4">option 4</option>
    12. <option value="5">option 5</option>
    13. <option value="6">option 6</option>
    14. <option value="7">option 7</option>
    15. <option value="8">option 8</option>
    16. <option value="9">option 9</option>
    17. </select>
    18. <form>
    Данные в селектах никак не связаны, мне нужно, что бы первоначально на странице был один, а при любом выборе в первом - появлялся второй. Есть ли что-то наподобии такого, в качестве примера?
     
  2. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Лови, для примера:

    Код (Text):
    1.  
    2. <!DOCTYPE HTML>
    3. <html>
    4. <head>
    5.  
    6. <style>
    7.     .s1 {
    8.       visibility: visible;
    9.     }
    10.     .s2 {
    11.       visibility: hidden;
    12.     }
    13.   </style>
    14.  
    15. </head>
    16. <body>
    17.     <form action="#" method="post">
    18.     <select id="first_select" class="s1">
    19.         <option value="1">option 1</option>
    20.         <option value="2">option 2</option>
    21.         <option value="3">option 3</option>
    22.     </select>
    23.     <select id="second_select" class="s2">
    24.         <option value="1">option 1</option>
    25.         <option value="2">option 2</option>
    26.         <option value="3">option 3</option>
    27.         <option value="4">option 4</option>
    28.         <option value="5">option 5</option>
    29.         <option value="6">option 6</option>
    30.         <option value="7">option 7</option>
    31.         <option value="8">option 8</option>
    32.         <option value="9">option 9</option>
    33.     </select>
    34. <form>
    35. <script>
    36.  
    37. var mySelect = document.getElementById("first_select");
    38.  
    39. mySelect.onchange = function(e){
    40.     document.getElementById("second_select").className = "s1";
    41. }
    42.  
    43. </script>
    44. </body>
    45. </html>
    Добавлено спустя 1 минуту 39 секунд:
    Да, если открыть селект и выбрать тот же первый пункт, что выбран по умолчанию, второй селект не появится. Эта задачка тебе как домашнее задание будет, чтобы не все коту масленица :)
     
  3. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    тут же есть прикрепленные темы под динамиечкому селекту.
     
  4. sowelanes

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

    С нами с:
    11 дек 2014
    Сообщения:
    101
    Симпатии:
    0
    Для 3-х и более чего-то не получается =\
    Код (PHP):
    1. <!DOCTYPE HTML>
    2. <html>
    3. <head>
    4. <style>
    5.     .s1 {
    6.       visibility: visible;
    7.     }
    8.     .s2 {
    9.       visibility: hidden;
    10.     }
    11.     .s3 {
    12.       visibility: hidden;
    13.     }
    14.   </style>
    15.  
    16. </head>
    17. <body>
    18.    <form action="#" method="post">
    19.    <select id="first_select" class="s1">
    20.       <option value="1">option 1</option>
    21.       <option value="2">option 2</option>
    22.       <option value="3">option 3</option>
    23.    </select>
    24.    <select id="second_select" class="s2">
    25.       <option value="1">option 1</option>
    26.       <option value="2">option 2</option>
    27.       <option value="3">option 3</option>
    28.    </select>
    29.    <select id="third_select" class="s3">
    30.       <option value="1">option 1</option>
    31.       <option value="2">option 2</option>
    32.       <option value="3">option 3</option>
    33.    </select>
    34. <form>
    35. <script>
    36. var mySelect = document.getElementById("first_select");
    37. var mySelect2 = document.getElementById("second_select");
    38. mySelect.onchange = function(e){
    39.    document.getElementById("second_select").className = "s1";
    40. }
    41. mySelect2.onchange = function(e){
    42.    document.getElementById("third_select").className = "s2";
    43. }
    44.  
    45. </script>
    46. </body>
    47. </html>
     
  5. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Потому что фигню написал, потому и не получается. Разберись внимательно, что происходит :)

    Добавлено спустя 2 минуты 40 секунд:
    1) Зачем тебе класс s3?
    2) Зачем ты третьему селекту присваиваешь s2, в котором прописал hidden?

    Ты не там увидел алгоритм, где надо.

    Добавлено спустя 1 минуту 23 секунды:
    Всем скрытым селектам ставь s2, а чтобы сделать их видимыми, ставь s1.
    Если селектов планируется неизвестное количество, гугли "JavaScript делегирование" и делай через него обработку универсального события.
     
  6. sowelanes

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

    С нами с:
    11 дек 2014
    Сообщения:
    101
    Симпатии:
    0
    А если мне нужно, что бы вместо третьего селекта появилась кнопка?
    Я присвоил ей класс s1 -> она появляется после выбора предыдущих двух селлектов, но с стилями .s1 а у нее другие стили вынесенные в класс .btn
     
  7. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Любому объекту можно присваивать произвольное количество классов. При этом свойства, описанные в классах, подключенных последними, перекрывают свойства классов, подключенных ранее. Изучи CSS чтоли, для начала.