Показать полную графическую версию : Надо сделать подгружающееся поле <SELECT>
Может кто подскажет как это можно реализовать или даст ссылку где это есть.
Задача такая:
Есть двухуровневая система категорий. В одном поле 'селект' выбираем категории первого уровня и при выборе с сервера подгружается второе поле 'селект' с подкатегориями.
P.S.: Скрипт, где сразу при выборе первого уровня появляется вложенные категории без подзагрузки не подойдет.
Prisoner
11-04-2004, 02:57
Это задача частного характера (если я правильно все понял), то есть относящаяся к классу подзадач (на них разбивают обычно что-то более массивное). Я сомневаюсь, что вы найдете отдельный скрипт который вам поможет, по сему рекомендую изучить вопрос самостоятельно и своими же силами реализовать задачку.
Вы наверно немного не так поняли. Есть форма на странице с двумя полями SELECT. При выборе в первом поле SELECT, варианты для выбора появляются во втором поле. Например, есть список стран и городов. В первом поле выбираем страну, а во втором с сервера подгружается список городов, относящихся к этой стране. При выборе другой страны, подгружается список городов, которые к ней относяться. В инете иногда попадал на сайты с такими формами, но уже не помню какие, если б вспомнил, посмотрел как там это реализовано. Эта задача не такого уж и частного характера. На сайтах с примерами яваскриптов есть такое, где при выборе в первом поле, появляются варианты во втором, но они не загружаются с сервера, а написаны на странице.
P.S.: Может кто знает ссылки на такие сайты, подскажите, пожалуйста.
Prisoner
14-04-2004, 03:18
Угу... но я так и понял вопрос по первому вашему посту и остаюсь при своем мнении :\. На php решение этой подзадачи будет занимать 20-30 строк кода (смотря какой источник информации). Ведь вы всего лишь генерируете содержимое тега второго SELECT'а на основе данных из первого.
Угу. Решение подразумевается таким: есть функция на javascript, которая срабатывает при событии onChange первого селекта. Она обращается к php-скрипту, который генерирует варианты для второго селекта, и выводит эти варианты во втором селекте. Вот собственно, такую бы функцию мне бы увидеть )
Prisoner
15-04-2004, 02:32
Вся проблема в том, что без финта ушами нельзя обратиться к php скрипту на стороне сервера не перезагружая страничку (если надо вернуть какие-то данные конечно). Таким образом ваше решение подойдет если вы сначала покажите первый селект, а потом после обработки данных выбранных посетителем показать уже оба, причем во втором уже соответствующая первому информация...
Vlad Drakula
16-10-2004, 18:44
Guest
а что в этой задече сложного?
выбирашь из бызы все названи категорий и подкатегорий
сортируешь их.
и выводишь в виде JS вставки.
на изменение значения первого селекта вешаешь на JS функцию, которая перпеопределяет значения второго селект.
Guest
это сайте данным по ссылке я не увидел двойного селекта!
Prisoner
17-10-2004, 02:47
Vlad Drakula
Это реклама... потому и не увидел :)
Vlad Drakula
Prisoner
а я и ссылки не увидела =) - это после кого-то из вас? :lol:
PerlMaster
17-10-2004, 15:19
Решение 1:
по событию "onChange" открываешь попап функцией window.open(). В попапе выводишь яваскрипт, который изменяет содержимое второго <SELECT>. Доступ к окну-родителю через свойство "opener". В конце попап сам себя закрывает.
Это решение может быть неприемлемо из-за распространненности блокировщиков всплывающих окон.
Решение 2:
создается фреймовая структура.
Первый (основной) фрейм - для отображения информации - занимает 100% места. Второй (невидимый) фрейм используется для загрузки данных для второго селекта. Инициировать загрузку данных в невидимый фрейм можно несколькими способами:
(код может содержать неточности, демонстрируется только идея)
а. window.parent.frames["hidden"].href="..."
б. window.open("...", "hidden") - недостатки как в п.1
в. Создать скрытую форму:
<form action="..." target="hidden" name="form2">
<input type="hidden" name="city">
</form>
Вызвать метод "sibmit".
forms["form2"].city.value="..."
forms["form2"].submit().
Исправлено: PerlMaster, 15:20 17-10-2004
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.