Показать сообщение отдельно
  #5 (permalink)  
Старый 11.01.2012, 15:41
Аватар для GuardCat
Просто любитель
Отправить личное сообщение для GuardCat Посмотреть профиль Найти все сообщения от GuardCat
 
Регистрация: 13.09.2011
Сообщений: 300

Самописный вариант. Значениями элементов списка станут их порядковые номера (от нуля).
<select id = "sex">
  <option value="m" selected>Мужчина</option>
  <option value="f">Женщина</option>
  <option value="x">Зверев</option>
  <option value="?">Другое</option><!-- Данных на это поле нет, соответственно, зависимый селект будет просто очищаться -->
</select>
<select id = "names"></select>
<script>
  var dataObject = {
    "m": "Пётр,Василий,Сергей,Октавиан",
    "f": "Ирина,Светлана,Марина,Евгения",
    "x": "Гламур,Звезда,Шоумен,Куафёр"
  };
  makeRelation = (function () {
    function change(slave, data){
      var x, dataArray, option;
      slave.innerHTML = "";
      if (!(this.value in data)){
        return false;
      }
      dataArray = data[this.value].split(",");
      for(x = 0; x < dataArray.length; x++) {
        option = document.createElement("option");
        option.value = String(x);
        option.innerHTML = dataArray[x];
        slave.appendChild(option);
      }
    }
    return function (master, slave, data) {
      master.onchange = function () {
        change.call(this, slave, data);
      }
      master.onchange();
    }
  })();
  makeRelation(gid("sex"), gid("names"), dataObject); // Использование
  function gid(txt){
    return document.getElementById(txt);
  }
</script>

Playground.

Последний раз редактировалось GuardCat, 11.01.2012 в 15:46.
Ответить с цитированием