Jump to content
  • 0

Динамический Select


slavok47
 Share

Question

Хотелось бы узнать как сделать динамические выпадающие списки, то есть: имеется 2 элемента Select, в первом элементе есть 2 варианта выбора, Задача как сделать чтобы при выборе значения из первого селекта, во втором менялись значения от выбранного варианта первого

Пример: в первом селекте 2 варианта (Сервер1 и Сервер2), при выборе Сервер1, во втором селекте появляются варианты выбора (Пример1, Пример2, Пример3), При выборе Сервер2 в этом же селекте появляются варианты (Пример4, Пример5, Пример6) с условием то не добавляются во второй селект а заменяются, вот как так, кто знает тот поймет о чем я,

100% это как то делается через массив строк, как связать все это что то не пойму

Link to comment
Share on other sites

7 answers to this question

Recommended Posts

  • 0

Если второй селект формируется циклом, и информация берется из массива, где индекс элемента в массиве равен индексу цикла, то сделай условие, если в первом селекте выбран первый элемент то цикл стартует с нулевой позиции, а если выбран второй элемент первого селекта то цикл стартует с нужной позиции, например с четвертой.

или еще можно так, иметь два массива, соответственно для первого и второго вариантов первого селекта, при выборе одного из вариантов в обработчике меняется имя массива...

Link to comment
Share on other sites

  • 0
Если второй селект формируется циклом, и информация берется из массива, где индекс элемента в массиве равен индексу цикла, то сделай условие, если в первом селекте выбран первый элемент то цикл стартует с нулевой позиции, а если выбран второй элемент первого селекта то цикл стартует с нужной позиции, например с четвертой.

Вот это интересный метод, как только его сваять :)

Link to comment
Share on other sites

  • 0

Вот что получилось, вроде работает, или можно проще?

<script type="text/javascript">	
var servdb = new Object()
servdb["data1"] = [{value:"1", text:"Пример 1"},
{value:"2", text:"Пример 2"},
{value:"3", text:"Пример 3"},
{value:"4", text:"Пример 4"}];
servdb["data2"] = [{value:"1", text:"Пример 5"},
{value:"2", text:"Пример 6"},
{value:"3", text:"Пример 7"},
{value:"4", text:"Пример 8"},
{value:"5", text:"Пример 9"}];

function settest(chooser) {
var dataChooser = chooser.form.elements["sel2"];
dataChooser.options.length = 0;
var choice = chooser.options[chooser.selectedIndex].value;
var db = servdb[choice];
dataChooser.options[0] = new Option("Примеры ", "", true, false);
if (choice != "") {
for (var i = 0; i < db.length; i++) {
dataChooser.options[i + 1] = new Option(db[i].text, db[i].value);
}
}
}
</script>
</head>
<body>
<form name="primer" action="">
<select name="test" onchange="settest(this)">
<option value="" selected>Выбор сервера</option>
<option value="data1">Сервер 1</option>
<option value="data2">Сервер 2</option>
</select>
<select name="sel2">
<option value="" selected>Примеры</option>
</select>
</form>

Edited by slavok47
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy