|
|
|
| Здравствуйте есть такая вот замануха:
1.Есть один select с разделами
2.Есть второй select с подразделами
Мне необходимо делать каким то образом выборку! т.е.
при вы боре раздела в 1 селекте, необходимо подставлять автоматически все подкатегории в
со 2 селект! Как это сделать?!
Заранее благодарен! | |
|
|
|
|
|
|
|
для: cernos
(27.09.2005 в 15:37)
| | Я с этим тоже мучался. Описано это по следующему адресу http://softtime.ru/forum/read.php?id_forum=3&id_theme=7665&page=1. Убедительная просьба, если вдруг найдется решение вопроса с функцией (см. по ссылке) или она пойдет у Вас как должна, напишите пожалуйста об этом в вышеуказанной теме. Заранее благодарен. | |
|
|
|
|
автор: Deady (27.09.2005 в 16:51) |
|
|
для: cernos
(27.09.2005 в 15:37)
| | а как страница генерится?
вообще-то это халява. идея такая:
хранишь в скрипте для каждого значения из 1го селекта массив значений для 2го селекта, а потом при изменении 1го селекта во втором удаляешь все элементы и подставляешь нужные.
вот пример из книги JavaScript 2.0: The Complete Reference, Second Edition
<<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">>
<<html>>
<<head>>
<<title>>Related Select Test<</title>>
<<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />>
<<script type="text/javascript">>
<<!--
// Create an array to hold the cities for each country
var cities = new Array(4);
cities["Australia"] =
["Sydney", "Melbourne", "Canberra", "Perth", "Brisbane"];
cities["France"] =
["Paris", "Lyons", "Nice", "Dijon"];
cities["Japan"] = ["Tokyo", "Kyoto", "Osaka", "Nara"];
cities["New Zealand"] =
["Auckland", "Wellington", "Christchurch", "Dunedin", "Queenstown"];
function removeOptions(optionMenu)
{
for (var i=0; i << optionMenu.options.length; i++)
optionMenu.options[i] = null;
}
function addOptions(optionList, optionMenu)
{
removeOptions(optionMenu); // clear out the options
for (var i=0; i << optionList.length; i++)
optionMenu[i] = new Option(optionList[i], optionList[i]);
}
//-->>
<</script>>
<</head>>
<<body>>
<<h2>>Vacation Chooser<</h2>>
<<form name="testform" id="testform" action="#" method="get">>
Country:
<<select name="country" id="country"
onchange="addOptions(cities[this.options[this.selectedIndex].text],
document.testform.city);">>
<<option selected="selected">>Australia<</option>>
<<option>>France<</option>>
<<option>>Japan<</option>>
<<option>>New Zealand<</option>>
<</select>>
City:
<<select name="city" id="city">>
<<option>>Sydney<</option>>
<<option>>Melbourne<</option>>
<<option>>Canberra<</option>>
<<option>>Perth<</option>>
<<option>>Brisbane<</option>>
<</select>>
<</form>>
<</body>>
<</html>>
|
| |
|
|
|
|
|
|
|
для: Deady
(27.09.2005 в 16:51)
| | Поначалу вылезает первое значение страны и в неактивном селекте значение "-нет деления-", а потом перегружается.
А представляеете, у меня в скрипте только российских регионов 89, а если еще США, Канада, Германия, Китай и еще много других стран. Эта страница будет жрать у диалапников время, а у выделеньщиков - трафик, почем зря. | |
|
|
|
|
|
|
|
для: tim_mironov
(27.09.2005 в 18:23)
| | Вообще, это дело такое, с этим ничего не сделаешь. Единственное, что могу ещё посоветовать - можно написать пхп-скрипт, выполняющийся после выбора в первом, селекте, заполняющий соотв. второй селект. Иногда так делают, но, опять же, перезагрузка страницы тоже есть опред. траффик. Есть ещё один хитрый способ - при выборе в первом селекте в зависчимости от выбранного пункта Ява-скриптом делать незаметно вызов пхп-скрипта, и сгружать полученные резултаты (нужные элементы для второго селекта) в массив. Такой способ, если мне не изменяет память, сделан в разделе тех. поддержки на сайте Canon. | |
|
|
|
|
автор: Deady (28.09.2005 в 11:10) |
|
|
для: DDK
(27.09.2005 в 18:38)
| | если много стран и объемы большие, то ничего не поделаешь.
>Есть ещё один хитрый способ - при выборе в первом селекте в
>зависчимости от выбранного пункта Ява-скриптом делать
>незаметно вызов пхп-скрипта, и сгружать полученные резултаты
>(нужные элементы для второго селекта) в массив.
такая штука называется ajax. http://java.sun.com/developer/technicalArticles/J2EE/AJAX/
считается жутко новомодной, экономит трафик, но
1. пишется долго (хотя если написать 1 раз и понять смысл, то все просто и быстро)
2. могут быть проблемы с совместимостью браузеров (хотя у меня не было) | |
|
|
|
|