Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (JS) Как сделать динамический SELECT? / 20 сообщений из 20, страница 1 из 1
16.08.2005, 16:12
    #33218517
mod
mod
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JS) Как сделать динамический SELECT?
задача такая
Допустим есть два ниспадающих меню (SELECT)
в первом меню строки выбора [a1,a2,a3] во втором в зависимости от выбора в первом [a1.1,a1.2,a1.3] или [a2.1,a2.2,a2.3] или [a3.1,a3.2,a3.3]. При этом формадолжна оправлять значения [b1.1,b1.2,b1.3] или [b2.1,b2.2,b2.3] или [b3.1,b3.2,b3.3] соответсвенно.
Как такое можно реализовать?
...
Рейтинг: 0 / 0
16.08.2005, 16:18
    #33218549
Alex Rootoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JS) Как сделать динамический SELECT?
JavaScript исполняется на стороне клиента!


With best regards Alex Rootoff
...
Рейтинг: 0 / 0
16.08.2005, 16:48
    #33218689
4m@t!c
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JS) Как сделать динамический SELECT?
Alex Rootoff , к чему было ваше сообщение?

mod , на сколько я понял, На основании результатов перового SELECT должно формироваться содержимое второго SELECT?
Если так, то эта тема обсуждалась несколько раз. Алгоритм приблиительно следующий: по событию onChange в первом SELECT выполняется функция, которая подменяет содержимое второго SELECT.
А вообще - поиск по форуму (можно и не по этому, а например на webscript.ru )
----------------------------------------
Артисты не приехали, приехали цыгане
...
Рейтинг: 0 / 0
17.08.2005, 09:04
    #33219525
mod
mod
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JS) Как сделать динамический SELECT?
Alex Rootoff во-первых я в курсе, во-вторых его можно и на сервере выполнять, что частенько делают, если програмят на ASP.
...
Рейтинг: 0 / 0
17.08.2005, 09:05
    #33219526
mod
mod
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JS) Как сделать динамический SELECT?
Да, на основании первого выбора должно формироватся второе меню. Всё точно.
Счас ссылку посмотрю...
...
Рейтинг: 0 / 0
17.08.2005, 09:48
    #33219608
Black
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JS) Как сделать динамический SELECT?
как понимаю поиск сейчас не работает... но могу сказать точно, я давал ссылку на решение раз 10 уже ...
...
Рейтинг: 0 / 0
17.08.2005, 10:01
    #33219648
msh
msh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JS) Как сделать динамический SELECT?
это указанная Вами ссылка на webscript.ru. Я тоже искал решение подобной задачи. Спасибо.
...
Рейтинг: 0 / 0
18.08.2005, 09:11
    #33222142
mod
mod
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JS) Как сделать динамический SELECT?
Или я не понял, или это совсем не то что надо.... Мне надо чтобы уже на клиентской машине, при выборе в форме из одного списка изменялись значения в другом(при этом и число элементов списка изменяется)....
Грубо говоря в списках уточнения источников информации:
В превом типы источников (радио, ТВ, газеты и пр...), а во втором уточнения названий ("МК","Коммерсантъ","Мурзилка"). Поятно что если выбрано ТВ, то во втором списке должны быть только программы ТВ, а не газеты и тп.
...
Рейтинг: 0 / 0
18.08.2005, 09:45
    #33222198
msh
msh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JS) Как сделать динамический SELECT?
php юзаю недавно поэтому могу ошибаться, но суть примерно такая.
На клиенте формировать select на лету можете посредством JavaScript.
В где-то инете был пример. Иначе можете подгружать данные в 2-й
select из БД выборкой по первому select.
...
Рейтинг: 0 / 0
18.08.2005, 09:46
    #33222200
msh
msh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JS) Как сделать динамический SELECT?
что собственно и было показано в примере по ссылке
...
Рейтинг: 0 / 0
18.08.2005, 10:10
    #33222264
4m@t!c
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JS) Как сделать динамический SELECT?
авторИли я не понял,
Или вы не поняли, или некорректно форумлируете задачу. ИМХО, первое больше похоже на правду.
----------------------------------------
Артисты не приехали, приехали цыгане
...
Рейтинг: 0 / 0
18.08.2005, 12:42
    #33222844
mod
mod
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JS) Как сделать динамический SELECT?
тут тока JS подойдёт, из базы варианты в массив придётся кидать... И на клиенте уже с массивами разбиратся...
...
Рейтинг: 0 / 0
18.08.2005, 14:01
    #33223102
synapse
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JS) Как сделать динамический SELECT?
modтут тока JS подойдёт, из базы варианты в массив придётся кидать... И на клиенте уже с массивами разбиратся...
ну зачем так категорично, может в случае когда списки не велики можно их сразу встроить и на javascript делать выборку А вот если выборки делать из нескольких сотен записей??
Вот я например делал скрытый фрейм, в который я посылал запрос и в нем формировался уже серверным скриптом(на php) необходимый набор данных, а потом я отображал этот фрейм. По виду он у меня ничем не отличается от стандартного select'а .
...
Рейтинг: 0 / 0
18.08.2005, 14:24
    #33223176
4m@t!c
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JS) Как сделать динамический SELECT?
ИМХО, Вы обрывками излагаете задачу. Вам тяжело что-то подсказать.
----------------------------------------
Артисты не приехали, приехали цыгане
...
Рейтинг: 0 / 0
18.08.2005, 16:40
    #33223610
mod
mod
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JS) Как сделать динамический SELECT?
1. synapse, скрытый фреём это канечно хорошо, но не подходит....
выборки из которых строятся списки берутся из базы данных. Затем на Perl генерю HTML-форму. Списки небольшие, но могут менятся, поэтому фиксирванно не забить... На самом деле в итоге они всё одно ведь на клиенте фиксированные...
2. сложно сразу всё описать. кажется что и так всё в постанвке понятно, а кады видишь что нет, то и добавляешь...
...
Рейтинг: 0 / 0
18.08.2005, 16:43
    #33223621
mod
mod
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JS) Как сделать динамический SELECT?
на худой конец я вот подумал по onchange можно обновлять страничку.... с новым списком возвращать, но это жёстко и мерцать будет....
...
Рейтинг: 0 / 0
18.08.2005, 21:04
    #33224109
Alex Rootoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JS) Как сделать динамический SELECT?
Я извеняюсь, не там запостил.

With best regards Alex Rootoff
...
Рейтинг: 0 / 0
19.08.2005, 13:43
    #33225254
mod
mod
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JS) Как сделать динамический SELECT?
Бывает....
...
Рейтинг: 0 / 0
20.08.2005, 12:06
    #33226450
synapse
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JS) Как сделать динамический SELECT?
mod1. synapse, скрытый фреём это канечно хорошо, но не подходит....
выборки из которых строятся списки берутся из базы данных. Затем на Perl генерю HTML-форму. Списки небольшие, но могут менятся, поэтому фиксирванно не забить... На самом деле в итоге они всё одно ведь на клиенте фиксированные...
2. сложно сразу всё описать. кажется что и так всё в постанвке понятно, а кады видишь что нет, то и добавляешь...

Вы меня просто не поняли, попробую пояснить:
У вас несколько селектов, допусти вы выбрали в первом какой то параметр, затем когда вы пытаетесь открыть второй селект, в этот момент java скриптом посылается запрос(id из первого селекта) в скрытый фрейм, который обновляется и его содержание генерится(берутся данные из базы по переданному id) на сервере, затем этот фрейм отображается с нужными данными.
Кстати даже здесь есть пример дакого выпадающего списка(правда из него не делаются выборки). На странице с топиками,внизу страницы есть выпадающий список с форумами, вот он как раз и есть скрытый фрейм...

А обновление странички при onchange это самый плохой вариант, для пользователя это будет заметно и возможно даже медленно. Да и придется каждый раз передавать уже заполненый формы чтоб после обновления снова вернуть в них данные который пользователь заполнил...
...
Рейтинг: 0 / 0
20.08.2005, 14:37
    #33226606
Groove
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JS) Как сделать динамический SELECT?
Посмотрите в сторону Quickform
Тут более или менее подробная статья: http://phpclub.ru/detail/article/quickform


пхп-код, который все за Вас сделал:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
<?
set_include_path(get_include_path() . PATH_SEPARATOR . CFG_LIB_PATH."pear\\");

require_once 'HTML/QuickForm.php';

$form =& new HTML_QuickForm('frmTest', 'post');

$main[ 0 ] = "Pop";
$main[ 1 ] = "Rock";
$main[ 2 ] = "Classical";

$secondary[ 0 ][ 0 ] = "Belle & Sebastian";
$secondary[ 0 ][ 1 ] = "Elliot Smith";
$secondary[ 0 ][ 2 ] = "Beck";
$secondary[ 1 ][ 3 ] = "Noir Desir";
$secondary[ 1 ][ 4 ] = "Violent Femmes";
$secondary[ 2 ][ 5 ] = "Wagner";
$secondary[ 2 ][ 6 ] = "Mozart";
$secondary[ 2 ][ 7 ] = "Beethoven";
$opts[] = $main;
$opts[] = $secondary;

$hs =& $form->addElement('hierselect', 'ihsTest', 'Hierarchical select:', array('style' => 'width: 20em;'), '<br />');
$hs->setOptions($opts);

// Tries to validate the form
if ($form->validate()) {
    // Form is validated, then processes the data
    $form->freeze();
    $form->process('myProcess', false);
    echo "\n<HR>\n";
}

// Process callback
function myProcess($values)
{
    echo '<pre>';
    var_dump($values);
    echo '</pre>';
}

$form->display();
?>

в итоге Вы получаете следующий код

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
<form action="/elements.php" method="post" name="frmTest" id="frmTest">
<div>
<table  style="BORDER: #3F89C3 1px solid;" align=center border="0">

	<tr>
		<td width= 50 % align="right" valign="top"><b>Hierarchical select:</b></td>
		<td valign="top" align="left"><script type="text/javascript">
//<![CDATA[
hs_ihsTest_0 = {
"0":"Belle & Sebastian",
"1":"Elliot Smith",
"2":"Beck"
}
hs_ihsTest_1 = {
"3":"Noir Desir",
"4":"Violent Femmes"
}
hs_ihsTest_2 = {
"5":"Wagner",
"6":"Mozart",
"7":"Beethoven"
}
function swapOptions(frm, grpName, eleIndex, nbElements, arName)
{
    var n = "";
    var ctl;

    for (var i =  0 ; i < nbElements; i++) {
        ctl = frm.form[grpName+'['+i+']'];
        if (!ctl) {
            ctl = frm.form[grpName+'['+i+'][]'];
        }
        if (i <= eleIndex) {
            n += "_"+ctl.value;
        } else {
            ctl.length =  0 ;
        }
    }

    var t = eval("typeof("+arName + n +")");
    if (t != 'undefined') {
        var the_array = eval(arName+n);
        var j =  0 ;
        n = eleIndex +  1 ;
        ctl = frm.form[grpName+'['+ n +']'];
        if (!ctl) {
            ctl = frm.form[grpName+'['+ n +'][]'];
        }
        for (var i in the_array) {
            opt = new Option(the_array[i], i, false, false);
            ctl.options[j++] = opt;
        }
    }
}
//]]>
</script><select style="width: 20em;" name="ihsTest[0]" onchange="swapOptions(this, 'ihsTest', 0, 2, 'hs_ihsTest');">
	<option value="0">Pop</option>
	<option value="1">Rock</option>
	<option value="2">Classical</option>
</select><br /><select style="width: 20em;" name="ihsTest[1]">
	<option value="0">Belle & Sebastian</option>
	<option value="1">Elliot Smith</option>
	<option value="2">Beck</option>
</select></td>
	</tr>
</table>
</div>
</form>
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (JS) Как сделать динамический SELECT? / 20 сообщений из 20, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]