Два списка (select) - измен. 2-го в завис. от 1-го

  • Автор темы Myborisov
  • Дата начала
Статус
Закрыто для дальнейших ответов.
M

Myborisov

Срочно возникла необходимость вставить в форму два выпадающих меню (select) на java !

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

Постараюсь объяснить подробнее:

У меня форма имеет вид:

Код:
<form name="search" action="searchlocation.php" method="post">
<select size="1" name="oblast">
<option value=>Выберите область</option>
<option value="1">Минская</option>
<option value="2">Могилёвская</option>
<option value="3">Гомельская</option>
<option value="4">Витебская</option>
<option value="5">Брестская</option>
<option value="6">Гродненская</option>
</select>
<br><br>
<select size="1" name="gorod">
<option value=>Выберите город</option>
<option value="1">Минск</option>
<option value="2">Борисов</option>
<option value="3">Жодино</option>
<option value="4">Могилёв</option>
<option value="5">Шклов</option>
<option value="6">Гомель</option>
<option value="7">Светлогорск</option>
<option value="8">Витебск</option>
<option value="9">Полоцк</option>
<option value="10">Брест</option>
<option value="11">Барановичи</option>
<option value="12">Гродно</option>
<option value="13">Лида</option>
</select>
</form>

Т.е мне нужно, чтобы при выборе в первом выпадающем списке, например Минской области (value=1) - во втором были только города со значением value от 1 до 3 (Т.е. при выборе Минской области появлялись города - Минск, Борисов, Жодино). При выборе Могилёвской области - города со значением value от 4 до 5 (естественно - у меня городов будет не два, а больше). И т.д. шесть областей - и с каждой около 20 городов. Но чтобы при выборе одной из них - во втором списке были только города этой области.

Нужно сделать так, чтобы после выбора нужной области и города скрипту (обработчику формы) отправлялись значения value двух списков (выбранной области и города).

Ребята - помогите, пожалуйста!
 
A

Andrew Stephanoff

Вот наспех накидал..
Код:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>test</title>
</head>

<body>

 <select id="cmbRegion" name="region"></select>
 <select id="cmbCities" name="cities"></select>

 <script type="text/javascript">
var oRegion = [{
   "value"   : "1",
   "text"   : "Минская",
   "cities"  : [{
       "value" : "1",
       "text" : "Минск"
     }, {
       "value" : "2",
       "text" : "Борисов"
     }, {
       "value" : "3",
       "text" : "Жодино"
   }]
 }, {
   "value"   : "2",
   "text"   : "Могилевская",
   "cities"  : [{
       "value" : "4",
       "text" : "Могилев"
     }, {
       "value" : "5",
       "text" : "Шклов"
   }]
}];
var cmbRegion = document.getElementById("cmbRegion");
var cmbCities = document.getElementById("cmbCities");

cmbCities.clear = function() {
 while(this.childNodes.length > 0) {
   this.removeChild(this.firstChild);
 }
}
function load(aValues) {
 var oOption = {};
 for (i = 0, count = aValues.length; i < count; i ++) {
   oOption = document.createElement("OPTION");
   oOption.value = aValues[i].value;
   oOption.appendChild(document.createTextNode(aValues[i].text));
   this.appendChild(oOption);
 }
}

cmbCities.load = load;
cmbRegion.load = load;

cmbRegion.onchange = function() {
 cmbCities.clear();
 cmbCities.load(oRegion[this.value - 1].cities);        
}
cmbRegion.load(oRegion);
cmbRegion.onchange();
 </script>

</body>
</html>
 
M

Myborisov

Огромное Вам СПАСИБО!

Два дня искал в интернете - натыкался на всякие предложения - но всё не то, а сегодня решил обратиться к программистам-соотечествинникам - и сразу помогли именно тем, чем надо! :ph34r:

Вялікі Вам ДЗЯКУЙ!!! :ph34r:
 
A

Andrew Stephanoff

А ты не ищи счастья заграницей :ph34r:
Цени свою Родину!
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!