![]() |
Модераторы: Sardar, Aliance |
![]() ![]() ![]() |
|
Aliance |
|
||||||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 6 Всего: 137 |
Задача: изменить значения во втором выпадающем списке, следуя выбору из первого.
Решение:
Обсуждение: Имеем 2 элемента select, предоставляющий объекты HTMLSelectElement. По событию onchange вызываем функцию setCities(), принимающую аргумент chooser, являющийся ссылкой на этот самый объект HTMLSelectElement первого элемента select (this). Далее читаем выбранное значение:
Далее вставляем первый неизменный дочерний элемент option:
А далее из массива regiondb["выбранный_континент"] читаем значение, в виде объекта с 2 полями - value и text, и соответственно в цикле for их подставляем. Все. |
||||||
|
|||||||
Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 16 Всего: 317 |
Очень хорошо. Следующим шагом будет неограниченное количество цепочек, а не два селекта. Также динамическая подзагрузка XML с данными конкретной цепочки, а не цельный массив.
В целом классно ![]() -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
Tangash |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 29.10.2006 Репутация: нет Всего: нет |
А как теперь выбранные РЕГИОН и ГОРОД передать в PHP???
|
|||
|
||||
12345c |
|
|||
![]() Круглый ![]() ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 2018 Регистрация: 26.12.2005 Где: наша не пропадала ? Репутация: 2 Всего: 101 |
Нажать на кнопку "Отправить" формы.
(???) |
|||
|
||||
tolik777 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 133 Регистрация: 19.6.2006 Репутация: нет Всего: 2 |
А этот шаг уже есть? А то встала такая вот задача, а как реализовать не пойму |
|||
|
||||
Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 6 Всего: 137 |
Какой именно шаг: два селекта или XML?
|
|||
|
||||
KonstRuctor |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 245 Регистрация: 31.3.2006 Где: Россия, Санкт-Пет ербург Репутация: нет Всего: нет |
Возник вопрос. Когда мы вставляем в базу новую запись, все понятно. Но когда мы редактируем уже имеющуюся запись, мы читаем из базы данных значения и показываем их на экран админу, чтобы он мог их изменить (или оставить так). Как показать существующее значение в первом селекте -- понятно. Допустим, это Азия.
Как сделать так, чтобы сразу экране показывался готовый выбор второго селекта? И с подсвеченным значением "Улан-Батор"? И при этом сохранить функциональность работы двух селектов. Спасибо. |
|||
|
||||
bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: нет Всего: 315 |
если выбираются значения по-умолчанию в пхп, то в пхп, это и можно сделать, просто во второй селект слить список азиатских значений и также выбрать пункт по-умолчанию по тому же принципу:
Это сообщение отредактировал(а) bars80080 - 13.12.2007, 11:35 |
|||
|
||||
KonstRuctor |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 245 Регистрация: 31.3.2006 Где: Россия, Санкт-Пет ербург Репутация: нет Всего: нет |
Я не совсем то имел в виду. Таким образом, действительно, удобно получить выделенное значение селекта. Однако я пытаюсь сделать нечто другое. Вот смотрите, рассмотрим данный пример с континентами и городами. У меня большая форма ввода данных, и кроме этих двух связанных селектов есть еще несколько обычных полей ввода информации: <input type="text">. Если я добавляю новую запись, все понятно. Просто заполняю форму и отсылаю данные на сервер -- у меня связанные селекты работают изумительно. НО! если я хочу отредактировать имеющуюся запись, мне на экран показываются все данные об этой записи, то есть все поля ввода <input type="text"> заполнены данными, которые я хочу редактировать, прочитанными из базы. Так вот, и эти два связанных селекта должны быть в "заполненном" положении, то есть в первом должен быть выбран континент, во втором - город. * * * Это очень принципиально, так как иначе редактирование записи сделать невозможно, или надо его производить в два этапа. Предположим, админ захотел поменять континент, он его поменял, потом в новом окне ему уже предлагают поменять город для вновь выбранного континента.... Иначе нарушается логика связей между двумя селектами. * * * ВОПРОС. Кто знает, как реализовать даную функцию для данного примера? Спасибо. |
|||
|
||||
bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: нет Всего: 315 |
всё равно не вижу проблем, либо просто не понял
имхо: всё чем оперирует js уже есть в браузере допустим мы формируем два селекта, по выбору в первом у нас обновляется список значений во втором, стало быть данные для этих селектов уже были выбраны со всей бд и они находятся на клиентской стороне, то есть данные для второго селекта составляют список всех возможных городов мира, а мы просто сужаем поиск выбирая континент собственно я уже делал это здесь http://turne-trans.ru/service/hotelsearch/ если мы хотим, чтобы при выборе второго селект заполнялись все элементы text в форме, то: 1. либо нам нужно, чтобы вся бд уже присутствовала здесь, но для большой бд это загнёт трафик 2. либо при выборе второго селект у нас происходил запрос на сервер и он выдавал страницу с заполненными полями, что собственно все и делают в этом случае не видно совершенно никакой проблемы, просто нужно грамотно написать вставку значений по умолчанию Это сообщение отредактировал(а) bars80080 - 14.12.2007, 10:32 |
|||
|
||||
KonstRuctor |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 245 Регистрация: 31.3.2006 Где: Россия, Санкт-Пет ербург Репутация: нет Всего: нет |
Мне не понятно, как сделать так, чтобы при редактировании записи второй селект также был заполнен, при этом функциональность двух связанных селктов была бы сохранена. Дело в том, что фунция по событию onchange срабатывает, а при загрузке значений из базы, видимо, не срабатывает. * * * То есть при загрузке из базы для редактирования первый селект у меня выбран верно, а во втором красуется одинокое "Выберите город" и под ним пусто. Если поменять континент на какой-то другой, функциональность работы двух селектов восстанавливается, но идея безопасного редактирования теряется, так как администратор уже забыл, какие ДОЛЖНЫ быть значения изначально. * * * Поэтому я хочу сделать так, чтобы при редактировании записи администратор ВИДЕЛ на экране два связанных селекта с высвеченными на них значениями. * * * Не знаю, какими еще словами мне описать проблему. Я нашел "тупое" решение: выводить все данные о записи в полях формы, а данные, которые надо было бы выводить в селектах, показывать просто текстом и рядом ссылку "редактировать континенты/страны". И попадать в другое окно, где уже редактируем с чистого листа, потом возврат к основной форме, где уже будут указаны новые, только что отредактированные значения. Вот только так выходит. |
|||
|
||||
bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: нет Всего: 315 |
решение проблемы всегда есть
посмотрите пожалуйста на эту страницу http://turne-trans.ru/motortrans/transfer/ там находится форма заказа, на которой сопряжены между собой пять селектов город, откуда, куда, вокзал и аэропорт изменяя город, мы изменяем и список вокзалов и аэропортов если вы не заполните какие-нибудь поля отмеченные *, заказ оформлен не будет, и вас выкинет обратно в эту же форму, но если бы при этом исчезала информация из тесктовых полей и из селекта, то новое заполнение немало бы расстроило клиента, поэтому мне пришлось обыграть эту проблему принцип тот же: сохранить функциональность и выставить введённые ранее значения если вас это устроит (если я правильно понял что вы хотите), могу выложить код, уверен разберётесь Это сообщение отредактировал(а) bars80080 - 14.12.2007, 14:41 |
|||
|
||||
KonstRuctor |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 245 Регистрация: 31.3.2006 Где: Россия, Санкт-Пет ербург Репутация: нет Всего: нет |
Воистину, оно! Действительно, все работает как вы говорите.
У меня задача гораздо проще: увязать три таблицы: Страна: country_id, country_name Город: city_id, country_id, city_name Товар: tovar_id, country_id, city_id, tovar_name Предположим, все таблицы заполнены данными. Далее я хочу редактировать товар, имеющийся в базе. На экране вижу: Наименование товара: tovar_name и два связанных селекта, в одном из них показан список стран с активной country_id, в другом -- список городов для этой страны с активным городом city_id. При этом админ легко может щелкать любую другую страну, город и т.д., то есть связанность селектов сохранятся. * * * Что я умею делать? Я умею выводить список стран с активной страной данного товара, рядом у меня выводится пустой список городов с предложением выбрать город. * * * Сегодня часов 5 искал решение по разным форумам. Ничего не нашел. Если вам не жалко показать ваш код, буду очень благодарен. Попробую разобраться, хотя у вас там все гораздо сложнее! Можно мне на почту -- как вам удобнее. |
|||
|
||||
KonstRuctor |
|
||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 245 Регистрация: 31.3.2006 Где: Россия, Санкт-Пет ербург Репутация: нет Всего: нет |
Я нашел решение проблемы. Решается с помощью библиотек jQuery 1.2.1 или prototype.js.
В head вставляется
И далее
А вся работа с базой данных происходит в файле sublist.php
В принципе я заставил это все работать как мне надо. НО! У меня во втором связанном селекте появляются квадратики вместо русских букв. Никак не могу понять, откуда это хрень вылезает и как ее побороть. Никто не сталкивался с этим? |
||||||
|
|||||||
bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: нет Всего: 315 |
сорри, меня по выходным не бывает
код следующий: http://interes.uzelok.net/files/transf.rar здесь не выкладываю, потому как русский текст в кракозябры превращается, кстати, как этого избежать?, всё время забываю спросить извиняюсь за код, тяжеловесен, пришлось перемалывать предыдущую структуру, написанную не мной понятное дело это только кусок, но весь js там что касается
на лицо проблемы с кодировкой, товарищи здесь говорят о том, что js работает в utf, а вывод вы навеняка планировали в cp-1251, но это уже другой вопрос и на эту тему вам могут ответить более компетентные люди |
|||
|
||||
![]() ![]() ![]() |
Здесь публикуют скрипты, которые уже проверены в обсуждениях других тем (при этом полезно поставить ссылки на все смежные обсуждения) или переносятся кем-либо из модераторов по просьбе участников, если видно, что в результате обсуждения темы был написан полезный или интересный скрипт. Третий возможный вариант - участник форума публикует скрипт, заведомо известный как полезный и эффективный, для, возможно, небольшой доработки и обсуждения. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | JavaScript: Наши скрипты | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |