Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Дбулируем установить значение одного <slect> при его выборе в другом (https://javascript.ru/forum/dom-window/29426-dbuliruem-ustanovit-znachenie-odnogo-slect-pri-ego-vybore-v-drugom.html)

Skesh 29.06.2012 00:36

А вот и нет, в id="sel2" option value=\"$mass_subkategory[$i]\" здесь текст, типа Учреждение 1, Больница 2, Дом4 и тд., а не значения 0, 0, 1, 1, 2 и тд., все в них впирается. Нужно чтобы работало под текст.

Признатся, я благодарен вам за терпение bes, другой бы уже плюнул, спасибо Вам.

Deff 29.06.2012 01:00

Ну если на jQuery - то как два пальца,
Skesh,
Выложите код HTML - cоздайте удобство зрителю,
Или закодируйте исходник на китайском чтобы с трёх языков переводить

Skesh 29.06.2012 09:11

Вылажую весь код, только не менять значения name и value в select и option
<!doctype html>
<script>
window.onload = function () {//onload begin
  var sel1 = document.getElementById('sel1');
  var sel2 = document.getElementById('sel2');
  var sel3 = document.getElementById('sel3');
  var sel2copy = document.getElementById('sel2copy');

  var childs = sel2.options;
  var len = sel2.options.length;
  var index;

  var setPoints = function () {
    index = sel1.selectedIndex;
    sel2copy.innerHTML = '';
    for (var i = 0; i < len; i++) {
      if (parseInt(childs[i].value) == index) {
        sel2copy.appendChild(childs[i].cloneNode(true));
      }
    } 
  }

  setPoints();

  sel1.onchange = function () {
    setPoints();
    sel3.selectedIndex = sel1.selectedIndex; 
  }

}//onload end
</script>

<form id="form2" name="form2" method="post" action="action.php" enctype="multipart/form-data">
<p><?PHP echo $language[225];?> 
					<select name="kategory_nazva" id="sel1">
					<?PHP
					for ($i=0; $i<=count($mass_kategory)-1; $i++)
					{	echo "<option value=\"$mass_kategory[$i]\" ";
						if ($mass_kategory[$i]==$kategory)	{echo "selected";}
						echo ">$mass_kategory[$i]</option>";
					}
					?>
					</select>
					<select name="subkategory_nazva" id="sel2" style="display: none">";
					<?PHP
					for ($i=0; $i<=count($mass_subkategory)-1; $i++)
					{	echo "<option value=\"$mass_subkategory[$i]\" "; 
						if ($mass_subkategory[$i]==$subkategory)	{echo "selected";}
						echo ">$mass_subkategory[$i]</option>";
					}
					?>
					</select>
					
					<select name="subkategory_nazva" id="sel2copy">";
					
					</select>
					
					<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
					<?PHP echo $language[226];?> 
					<select name="new_kategory_nazva"  id="sel3">
					<?PHP
					for ($i=0; $i<=count($mass_kategory)-1; $i++)
					{	echo "<option value=\"$mass_kategory[$i]\" ";
						if ($mass_kategory[$i]==$kategory)	{echo "selected";}
						echo ">$mass_kategory[$i]</option>";
					}
					?>
					</select>
</form>

bes 29.06.2012 10:10

<select id="sel1">
  <option>Пункт 1</option>
  <option>Пункт 2</option>
  <option>Пункт 3</option>
  <option>Пункт 4</option>
</select>

<select id="sel2" style="display: none">
  <option value="Пункт 1">Пункт 101 </option>
  <option value="Пункт 1">Пункт 102</option>
  <option value="Пункт 1">Пункт 103 </option>
  <option value="Пункт 2">Пункт 201 </option>
  <option value="Пункт 2">Пункт 202 </option>
  <option value="Пункт 2">Пункт 203 </option>
  <option value="Пункт 3">Пункт 301 </option>
  <option value="Пункт 3">Пункт 302 </option>
  <option value="Пункт 3">Пункт 302 </option>
  <option value="Пункт 4">Пункт 401 </option>
  <option value="Пункт 4">Пункт 402 </option>
  <option value="Пункт 4">Пункт 403 </option>
</select>

<select id="sel2copy">
</select>

<select id="sel3">
  <option>Пункт 1</option>
  <option>Пункт 2</option>
  <option>Пункт 3</option>
  <option>Пункт 4</option>
</select>

<script>
window.onload = function () {//onload begin
  var sel1 = document.getElementById('sel1');
  var sel2 = document.getElementById('sel2');
  var sel3 = document.getElementById('sel3');
  var sel2copy = document.getElementById('sel2copy');

  var childs = sel2.options;
  var len = sel2.options.length;
  var text;

  var setPoints = function () {
    text = sel1.options[sel1.selectedIndex].text; 
    sel2copy.innerHTML = '';
    for (var i = 0; i < len; i++) {
      if (childs[i].value == text) {
        sel2copy.appendChild(childs[i].cloneNode(true));
      }
    } 
  }

  setPoints();

  sel1.onchange = function () {
    setPoints();
    sel3.selectedIndex = sel1.selectedIndex; 
  }

}//onload end
</script>

Skesh 29.06.2012 11:59

Тогда в id="sel2" будет передаватся значение Пункт 1 а не Пункт 101 как то мне нада...

bes 29.06.2012 12:26

Цитата:

Сообщение от Skesh
Тогда в id="sel2" будет передаватся значение Пункт 1 а не Пункт 101 как то мне нада...

Напишите готовые селекты sel1 и sel2, я же не знаю, что у вас имеется в виду под $mass_kategory и $mass_subkategory, где равные значения в этих двух селектах (они и являются связующим звеном между ними)

Skesh 30.06.2012 10:33

<form action="analysis.php" method="post" name="frt" id="frt" enctype="multipart/form-data">
<select name="kategory" id="sel1">
<option value="Всі категорії" selected>Всі категорії</option>
<option value="Управління освіти - школи">Управління освіти - школи</option>
<option value="Управління освіти - садочки">Управління освіти - садочки</option>
<option value="Управління охорони здор.">Управління охорони здор.</option>
<option value="Управління культури і туризму">Управління культури і туризму</option>
<option value="Управління молоді та спорту">Управління молоді та спорту</option>
<option value="Інші структурні підрозділи МВК">Інші структурні підрозділи МВК</option>
<option value="Управління праці та соцзахисту">Управління праці та соцзахисту</option>
<option value="ТЕСТ">ТЕСТ</option>
</select>

<select name="subkategory" id="sel2" style="display: none">
<option class="Управління освіти - школи" value="НВО-1">НВО-1</option>
<option class="Управління освіти - школи" value="НВО-28">НВО-28</option>
<option class="Управління освіти - школи" value="НВО-5">НВО-5</option>
<option class="Управління освіти - школи" value="НВО-9">НВО-9</option>
<option class="Управління освіти - школи" value="Палац творчості">Палац творчості</option>
<option class="Управління охорони здор." value="Перинатальний центр">Перинатальний центр</option>
<option class="Управління охорони здор." value="Поліклініка №1">Поліклініка №1</option>
<option class="Управління охорони здор." value="Поліклініка №2">Поліклініка №2</option>
<option class="Управління охорони здор." value="Поліклініка №3">Поліклініка №3</option>
<option class="Управління охорони здор." value="Поліклініка №4">Поліклініка №4</option>
<option class="Управління праці та соцзахисту" value="Промінь надії">Промінь надії</option>
<option class="Управління праці та соцзахисту" value="Родинний Затишок">Родинний Затишок</option>
<option class="Управління охорони здор." value="Станція швидкої допомоги">Станція швидкої допомоги</option>
<option class="Управління охорони здор." value="Стоматполіклініка">Стоматполіклініка</option>
<option class="Управління освіти - школи" value="ТБЛ">ТБЛ</option>
<option class="ТЕСТ" value="тест">тест</option>
<option class="Інші структурні підрозділи МВК" value="УЖКГ">УЖКГ</option>
<option class="Інші структурні підрозділи МВК" value="Управління з питань екології">Управління з питань екології</option>
<option class="Інші структурні підрозділи МВК" value="Управління молоді та спорту">Управління молоді та спорту</option>
<option class="Управління охорони здор." value="Управління охорони здор.">Управління охорони здор.</option>
<option class="Управління праці та соцзахисту" value="Управління праці та соцзахисту">Управління праці та соцзахисту</option>
<option class="Інші структурні підрозділи МВК" value="Управління торгівлі">Управління торгівлі</option>
<option class="Інші структурні підрозділи МВК" value="Управління транспорту">Управління транспорту</option>
</select>

<select id="sel2copy">
</select>

<select name="kategory2" id="sel3">
<option value="Всі категорії" selected>Всі категорії</option>
<option value="Управління освіти - школи">Управління освіти - школи</option>
<option value="Управління освіти - садочки">Управління освіти - садочки</option>
<option value="Управління охорони здор.">Управління охорони здор.</option>
<option value="Управління культури і туризму">Управління культури і туризму</option>
<option value="Управління молоді та спорту">Управління молоді та спорту</option>
<option value="Інші структурні підрозділи МВК">Інші структурні підрозділи МВК</option>
<option value="Управління праці та соцзахисту">Управління праці та соцзахисту</option>
<option value="ТЕСТ">ТЕСТ</option>
</select>
</form>

<script>
window.onload = function () {//onload begin
  var sel1 = document.getElementById('sel1');
  var sel2 = document.getElementById('sel2');
  var sel3 = document.getElementById('sel3');
  var sel2copy = document.getElementById('sel2copy');

  var childs = sel2.options;
  var len = sel2.options.length;
  var text;

  var setPoints = function () {
    text = sel1.options[sel1.selectedIndex].value; 
    sel2copy.innerHTML = '';
    for (var i = 0; i < len; i++) {
      if (childs[i].className == text) {
        sel2copy.appendChild(childs[i].cloneNode(true));
      }
    } 
  }

  setPoints();

  sel1.onchange = function () {
    setPoints();
    sel3.selectedIndex = sel1.selectedIndex; 
  }

}//onload end
</script>


Видите, у меня все работало по класу, тоесть если class sel2 = value sel1 в sel2 показывает только ети значение, а мне еще нужно добавить чтобы в sel3 показывало такоеже значение как в sel1. А как вы делаете что можно запустить скрипт? ну типа нажать кнопку "Посмотреть!"?

bes 30.06.2012 10:47

Замените в if (childs[i].value == text); value на className.
Если хотите, можете в sel1.options[sel1.selectedIndex].text; заменить
text на value (они у вас равны).

Цитата:

Сообщение от Skesh
А как вы делаете что можно запустить скрипт? ну типа нажать кнопку "Посмотреть!"?

[html run]

Skesh 02.07.2012 17:48

Вроде работает =) скажите пожалуйсто а в sel2copy будет передаватся value sel2?

Skesh 02.07.2012 17:54

Будет =) просто в <select id="sel2copy"> нужно дабавить тот же name что и в sel2. СПАСИБО ВАМ БОЛЬШОЕ!


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