Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   Надо сделать подгружающееся поле <SELECT> (http://forum.oszone.net/showthread.php?t=30953)

Guest 10-04-2004 18:38 212318

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

Задача такая:
Есть двухуровневая система категорий. В одном поле 'селект' выбираем категории первого уровня и при выборе с сервера подгружается второе поле 'селект' с подкатегориями.

P.S.: Скрипт, где сразу при выборе первого уровня появляется вложенные категории без подзагрузки не подойдет.

Prisoner 11-04-2004 02:57 212319

Это задача частного характера (если я правильно все понял), то есть относящаяся к классу подзадач (на них разбивают обычно что-то более массивное). Я сомневаюсь, что вы найдете отдельный скрипт который вам поможет, по сему рекомендую изучить вопрос самостоятельно и своими же силами реализовать задачку.

Guest 13-04-2004 21:10 212320

Вы наверно немного не так поняли. Есть форма на странице с двумя полями SELECT. При выборе в первом поле SELECT, варианты для выбора появляются во втором поле. Например, есть список стран и городов. В первом поле выбираем страну, а во втором с сервера подгружается список городов, относящихся к этой стране. При выборе другой страны, подгружается список городов, которые к ней относяться. В инете иногда попадал на сайты с такими формами, но уже не помню какие, если б вспомнил, посмотрел как там это реализовано. Эта задача не такого уж и частного характера. На сайтах с примерами яваскриптов есть такое, где при выборе в первом поле, появляются варианты во втором, но они не загружаются с сервера, а написаны на странице.

P.S.: Может кто знает ссылки на такие сайты, подскажите, пожалуйста.

Prisoner 14-04-2004 03:18 212321

Угу... но я так и понял вопрос по первому вашему посту и остаюсь при своем мнении :\. На php решение этой подзадачи будет занимать 20-30 строк кода (смотря какой источник информации). Ведь вы всего лишь генерируете содержимое тега второго SELECT'а на основе данных из первого.

Guest 14-04-2004 23:37 212322

Угу. Решение подразумевается таким: есть функция на javascript, которая срабатывает при событии onChange первого селекта. Она обращается к php-скрипту, который генерирует варианты для второго селекта, и выводит эти варианты во втором селекте. Вот собственно, такую бы функцию мне бы увидеть )

Prisoner 15-04-2004 02:32 212323

Вся проблема в том, что без финта ушами нельзя обратиться к php скрипту на стороне сервера не перезагружая страничку (если надо вернуть какие-то данные конечно). Таким образом ваше решение подойдет если вы сначала покажите первый селект, а потом после обработки данных выбранных посетителем показать уже оба, причем во втором уже соответствующая первому информация...

Vlad Drakula 16-10-2004 18:44 212324

Guest
а что в этой задече сложного?
выбирашь из бызы все названи категорий и подкатегорий
сортируешь их.

и выводишь в виде JS вставки.

на изменение значения первого селекта вешаешь на JS функцию, которая перпеопределяет значения второго селект.

Guest
это сайте данным по ссылке я не увидел двойного селекта!

Prisoner 17-10-2004 02:47 212325

Vlad Drakula
Это реклама... потому и не увидел :)

mar 17-10-2004 14:20 212326

Vlad Drakula
Prisoner
а я и ссылки не увидела =) - это после кого-то из вас? &nbsp;:lol:



PerlMaster 17-10-2004 15:19 212327

Решение 1:
по событию &quot;onChange&quot; открываешь попап функцией window.open(). В попапе выводишь яваскрипт, который изменяет содержимое второго &lt;SELECT&gt;. Доступ к окну-родителю через свойство &quot;opener&quot;. В конце попап сам себя закрывает.
Это решение может быть неприемлемо из-за распространненности блокировщиков всплывающих окон.

Решение 2:
создается фреймовая структура.
Первый (основной) фрейм - для отображения информации - занимает 100% места. Второй (невидимый) фрейм используется для загрузки данных для второго селекта. Инициировать загрузку данных в невидимый фрейм можно несколькими способами:
(код может содержать неточности, демонстрируется только идея)
а. window.parent.frames[&quot;hidden&quot;].href=&quot;...&quot;
б. window.open(&quot;...&quot;, &quot;hidden&quot;) - недостатки как в п.1
в. Создать скрытую форму:
&lt;form action=&quot;...&quot; target=&quot;hidden&quot; name=&quot;form2&quot;&gt;
&lt;input type=&quot;hidden&quot; name=&quot;city&quot;&gt;
&lt;/form&gt;
Вызвать метод &quot;sibmit&quot;.
forms[&quot;form2&quot;].city.value=&quot;...&quot;
forms[&quot;form2&quot;].submit().


[s]Исправлено: PerlMaster, 15:20 17-10-2004[/s]


Время: 15:03.

Время: 15:03.
© OSzone.net 2001-