Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Связать select и radio (https://javascript.ru/forum/jquery/49680-svyazat-select-i-radio.html)

abm 24.08.2014 00:32

Связать select и radio
 
Всем, привет!

подскажите как я могу связать список

<select class="spisok ">
 <option value="0" class="no_select">Выберите ваш район</option>
 <option value="1">Район1</option>
 <option value="2">Район2</option>
 </select>


чтобы при выборе определенного "Района" выбирался определенный radio

<input type="radio" name="delivery" value="1" class="delivery-item" id="del-type-1">
<input type="radio" name="delivery" value="2" class="delivery-item" id="del-type-2">



спасибо!

Vlasenko Fedor 24.08.2014 00:50

<body>
  <select class="spisok" onchange="selRadio(this.value)">
    <option value="0" class="no_select">Выберите ваш район</option>
    <option value="1">Район1</option>
    <option value="2">Район2</option>
  </select>
  <input type="radio" name="delivery" value="1" class="delivery-item" id="del-type-1">
  <input type="radio" name="delivery" value="2" class="delivery-item" id="del-type-2">
  <script>
    function selRadio(val) {
      var rad = document.getElementsByName("delivery");
      for (var i = 0; i < rad.length; i++) {
        rad[i].checked = rad[i].id == "del-type-" + val;
      }
    }
  </script>
</body>

можно так и еще есть куча вариантов

abm 24.08.2014 00:58

Спасибо, только у меня не работает, почему то..

Vlasenko Fedor 24.08.2014 01:14

еще вариант. если не работfет смотри в консоли броузера ошибки
<body>
  <select class="spisok" name="spisok">
    <option value="0" class="no_select">Выберите ваш район</option>
    <option value="1">Район1</option>
    <option value="2">Район2</option>
  </select>
  <input type="radio" name="delivery" value="1" class="delivery-item" id="del-type-1">
  <input type="radio" name="delivery" value="2" class="delivery-item" id="del-type-2">
</body>
<script>
  function selRadio(val) {
    var spisok = document.getElementsByName("spisok")[0];
    var rad = document.getElementsByName("delivery");
    spisok.onchange = function () {
      for (var i = 0; i < rad.length; i++) {
        rad[i].checked = rad[i].id == "del-type-" + this.value;
      }
    }
  }
  window.onload = selRadio;
</script>

abm 24.08.2014 01:23

спасибо, буду искать проблему.

Vlasenko Fedor 24.08.2014 01:41

еще вариант
<body>
  <select class="spisok">
    <option value="0" class="no_select" disabled selected>Выберите ваш район</option>
    <option value="1">Район1</option>
    <option value="2">Район2</option>
  </select>
  <input type="radio" name="delivery" value="1" class="delivery-item" id="del-type-1">
  <input type="radio" name="delivery" value="2" class="delivery-item" id="del-type-2">
</body>
<script type='text/javascript' src='http://code.jquery.com/jquery-1.9.1.js'></script>
<script>
  (function ($) {
    $(function () {
      $('select.spisok').change(function () {
        $('#del-type-' + this.value).prop('checked', true);
      });
      $('input[name="delivery"]').change(function () {
        $('select.spisok').find('option[value="' + this.value + '"]').prop('selected', true);
      });
    });
  }(jQuery));
</script>

abm 30.08.2014 13:56

Связанные списки + radio
 
Poznakomlus, спасибо нашел там ошибку. Теперь встал вопрос, а как сделать так, чтобы не просто выделялся radio, а еще и совершалось действие onclik

<input type="radio" name="delivery" value="1" class="delivery-item" id="del-type-1" onclick="shEvOrd('delivery',this,1)">


т.е. когда я сам кликаю на radio у меня срабатывает onclick="shEvOrd('delivery',this,1)". А когда выбираю значение из select, то нет.

Пробовал так:
(function ($) {
    $(function onclick(shEvOrd) {
      $('select.spisok').change(function () {
        $('#del-type-' + this.value).prop('checked', true);
      });
      $('input[name="delivery"]').change(function () {
        $('select.spisok').find('option[value="' + this.value + '"]').prop('selected', true);
      });
    });
  }(jQuery));


но чего то не срабатывает :(


Часовой пояс GMT +3, время: 23:33.