Заполнение элементами вотрого селекта при выборе первого селекта

DenVeroid

Новичок
Заполнение элементами вотрого селекта при выборе первого селекта

Нужно сделать два селекта, второй селект должен заполняться элементами от выбранного первого селекта

PHP:
<form method="POST" action="script.php">
	
	<select name="type_1">
	  <option>1</option>
	  <option>2</option>
	  <option>3</option>
	</select>
	
	<select name="type_2">
	  <option>1_1</option>
	  <option>1_2</option>
	  <option>1_3</option>
	</select>
	
	
	<input type="submit" value="Выбрать" name="send">
	
</form>


при выборе из первого селекта элемент "1" второй селект должен вывести элементы принадлежащий выбранному первому элементу из первого селекта?
как я понимаю тут нужно какимто образом сделать через onchange, но как?

тоесть получается что произойдёт с перезагрузкой страници.
 
спасибо, но нужно по проще, нужно только на js

смысл таков, нуждно первым селектом подгрузить второй селект

ведь есть что то типа этого onchange
 
кстати, такая же задача стояла... :)

alexhemp, спасибо за наводку
 
есть в CSS такое свойство display называется. Обращатся к нему object.style.display = 'none/block'

Дальше думай сам :)
 
DenVeroid

Если тебе нужно что-то "подгрузить" - то JsHttpRequest самая удобная библиотека.
 
ну я сделал так

PHP:
<select name="name" onchange="top.location.href=options[selectedIndex].value">
<option value="1" selected>Продукция</option>
<?php
  $select_data=array('Новоуральск','Новороссийск','Новгород','Нижнекамск','Москва','Мурманск');
    for($y=0; $y<count($select_data); $y++) {
     echo "<option value=\"center.php?cat=".$y."\">".$select_data[$y]."</option>";
    }
?>
</select>
 
Нда.... а где второй селект?
второй селект не стал вставлять сюда, там просто по имени перевого селекта $_GET['name'] заполняется второй селект, вся инфа берётся из БД

ещё бы неплохо бы сделать к примеру первый это будет селект а второй будет текстовое поле, тоесть при выборе селекта должно открываться небольшое окно, из которого должно появиться список принадлежашему выбранному элементу, при выборе из этого небольшого окна один элемент, должно заполниться тектовое поле, тоесть этим можно избавиться от перезагрузки основного окна, поэтому уже не нужно будет заново заполнять другие поля, вот только как это сделать?

понимаю что тут ничего нет сложного, если занать js
 
>вот только как это сделать?

А никак. Если не будешь читать ответы, и стараться идти по пути наименьшего сопротивления, то ничего у тебя не получится. Вопрос у тебя был один, а решил ты его совсем по другому. А теперь вообще хочешь чего-то третьего.
 
я не просил тонну кода, когда тут можно реализовать совсем проще, я уже решил свой вопрос, и ушло на это всего одна строчка

onchange="top.location.href=options[selectedIndex].value"

но это только с перезагрузкой страници, но точно также можно сделать с наименьшим кодом сделать, то что спрашивал в последний раз, и вопрос ведь тот-же самый, только реализация немного другая, и неужели трудно ответить, или у вас только всего один вариант(причём Котерова), и на большего вас нехватает....
 
DenVeroid
onchange="top.location.href=this.value"
:)
А как насчет технологии DOM для построения select?

:)
 
а я делал с помощью :
в js :
(1) - массив (для 2х селектов, 2 массива для 3х и тд)
(2) - 2 функции:
function select1(array или линк на array) - после всех преобразований переданной информации, циклом вызываю след. функцию

function insertoption(optopn,value,location) - в этой функции методом document.createElement('OPTION'); создаю

Логика такова, что для построения 2го селекта в качестве ключа массива используется значение 1го селекта и так до бесконечного множества селектов, разумеется такой подход более трудоёмок и , наверное, ресурсоёмок, но без перезагрузки страницы работает и "жрёт" только клиентские ресурсы :)
 
Lord Max

Сделай на http://dklab.ru/lib/Subsys_JsHttpRequest
Могу в привате продемонстрировать пример какие штуки получаются ЛЕГКО с ним.

Буквально в 10-15 строк кода решается ваша задача в 2-мя селектами. А селектов 3, а если затем нужно выбрать галочками а потом из списка?

Web-приложение не может юзать "только клиентские ресурсы", оно по определению клиент-серверное.
 
alexhemp
как-нибудь попробую, однако пока что, мне совершенно не требуется настолько мощное средство. У меня 3 селекта (как вы знаете в игре) для выбора в последнем нужной системы, куда необходимо отправиться, собственно php рисует 2 массива для js, да и потом в 30 строк остальные функции + у меня всего 2-3кб максимум, а там 8 только js. Однако спасибо за линк, когда понадобится сделать что-то посложнее, обязательно воспользуюсь.
Ps я имел в виду, что <b>JS</b> работает на клиенте и кушает клиентское.
 
Попробывал сделать выбору но почемуто второй селект дублирует значение. Кто знает почему.???

[HPH]
<?
include "set/setup.php";
function select($text)
{
include "set/setup.php";
$type=$_POST['type'];
$query=mysql_query($text,$db);
while ($myrow = mysql_fetch_row($query))
{
if (isset($_POST['type']) && $_POST['type']==$myrow[0])
{
echo "<option selected value='$myrow[0]'>$myrow[1]</option>\n";
}
else
{
echo"<option value='$myrow[0]'>$myrow[1]</option>\n";
}
}
}
?>

<html>
<head>
</head>
<body>

<form name="form" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">

<select name="type" onchange="this.form.submit()">
<option selected>------------------------</option>
<? select("SELECT t.id, t.name FROM type_prod t"); ?>
</select>

<select name="brand" onchange="this.form.submit()>
<option selected>------------------------</option>
<? select("SELECT b.id, b.name, t.id FROM brand b, type_prod t WHERE b.type_prod='$type'"); ?>
</select>

</form>
</body>
</html>
[/PHP]
 
Опять эту тему подняли, уже обсуждалось же много раз, вот совсем недавно даже ссылку дали, достаточно в поиске порыться немного. И что вы все к АЯКСУ то пристали? Здесь что из базы на миллион записей ключи вынимаются что-ли?
Вот ссылка (вариант не единственный, можно и через массив или ХЭШ сделать, но довольно приятный) - http://xhtml.ru/2006/02/11/dynamic-select/
 
Сверху