Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Событие onchange для заполненного селекта
Форумы портала PHP.SU » Клиентская разработка » JavaScript & VBScript » Событие onchange для заполненного селекта

Страниц (1): [1]
 

1. alsio - 29 Января, 2013 - 15:01:49 - перейти к сообщению
Есть 2 страницы:
new.php - форма для записи данных в БД.
update.php - та же форма, но уже заполненная из БД ранее введенными данными в new.php

Форма в new.php имеет разные виды полей, в т.ч. селекты, в зависимости от выбора в которых по событию onchange раскрываются/скрываются дополнительные поля формы.

Так вот при первичном вводе данных все работает, т.к. мы всегда что-то выбираем в селекте => есть событие onchange.

Вопрос, как быть с update.php ? Там значения селектов уже выбраны из БД => события onchange не происходит и доп. поля формы не раскрываются/скрываются.

Как быть в этой ситуации? Может быть здесь нужно использовать не onchange, или вообще какой-то специальный js нужен?

Прошу помощи! (если нужны какие коды/скрипты из того, что сейчас есть - выложу).
2. IllusionMH - 29 Января, 2013 - 15:16:16 - перейти к сообщению
alsio, делать это на сервере.
Ну или воспользоваться гуглом и найти на stackowerflow
http://stackoverflow[dot]com/questio[dot][dot][dot]e-event-manually
3. Zuldek - 29 Января, 2013 - 15:23:40 - перейти к сообщению
Не совсем понятен вопрос.
При заполнении формы у вас при заполнении некоторых полей появляются дополнительные поля.
Очевидно что в заполненной форме вы хотите вывести занесенные в неё данные, посему непонятно почему дополнительные поля должны выводиться у вас по какому-то событию.
При выборке данных для страницы вы собираете данные для формы, включая дополнительные поля и выводите их, если данные заполнены.

Если речь идет о том чтобы разворачивать дополнительные поля только при определенном действии, - ну привяжите это к любому действую, - клике по ссылке или по родительскому элементу форму.
4. alsio - 29 Января, 2013 - 22:45:37 - перейти к сообщению
Zuldek пишет:
Не совсем понятен вопрос


Вопрос, как произвести событие в update.php, где выбор уже загружен в селект (не выбран пользователем, а уже загружен вместе со страницей) ?

Например.
new.php
Селект "Выберите ТС" => Автомобиль
Появился селект "Модель" => ВАЗ
ЗАПИСАЛИ в БД

Вспомнили, что ВАЗ давно продан, и у нас КАМАЗ.
Открываем update.php (по соотв. id записи) и видим следующее:
Селект Автомобиль
Селект ВАЗ

И теперь правим второй селект на КАМАЗ.
5. alnik-75 - 30 Января, 2013 - 15:19:24 - перейти к сообщению
Все равно не понимаю. Более детально объясните.
когда с помощью селектов что-то внесли в базу. Потом то, что внесено в БД, выводится опять в селектах путем добавления соответствующему оптиону значения selected.
Я правильно понимаю?
6. alsio - 31 Января, 2013 - 11:24:09 - перейти к сообщению
alnik-75 пишет:
Я правильно понимаю?


Все верно.
7. alnik-75 - 31 Января, 2013 - 12:41:43 - перейти к сообщению
и что далее?
8. alsio - 01 Февраля, 2013 - 07:42:34 - перейти к сообщению
alnik-75 пишет:
и что далее?


А далее вопрос, как быть с update.php ? Там значения селектов уже выбраны из БД => события onchange не происходит и доп. поля формы не раскрываются/скрываются.
9. Zuldek - 01 Февраля, 2013 - 09:18:46 - перейти к сообщению
alsio пишет:
alnik-75 пишет:
и что далее?


А далее вопрос, как быть с update.php ? Там значения селектов уже выбраны из БД => события onchange не происходит и доп. поля формы не раскрываются/скрываются.


Повторяю Вам еще раз, что если данные у вас уже сохранены в БД, то на странице update.php вам не нужно никакое событие onchange - вы выводите сразу всю форму вместе с дополнителньыми полями.
Это на странице add.php у вас:
1. Первые селект - Выбор АС
2. В зависимости от выбор в селекте 1 открываем разные дополнительные поля.

На странице update.php вам известно, что АС у вас - автомобиль, и марка его - ВАЗ, поэтому вы:
1. Выводите селект Выбор АС со значением "автомобиль"
2. Выводите под ним селект "Марка" со значением "ВАЗ".

Зачем вам событие Onchange тут для вывода уже известных дополнительных полей?
Оно вам может быть нужно только если опять будет изменено значение селекта №1и нужно будет вывести другие дополнительные поля (а не выбор марки автомобиля), либо может потребоваться при изменении значения селекта №2 (для сохранения данных по Ajax-запросу или выводу дополнительных полей к селекту №2)

Поэтому мне не понятно что тут Вам может быть не понятно.
10. alsio - 01 Февраля, 2013 - 12:08:56 - перейти к сообщению
Zuldek, в том то и дело, что в update.php может быть изменено значение селекта №1 => понадобится выводить другой селект №2...

Т.е. только с помощью ajax? Не направите в сторону примеров подобного?
11. Zuldek - 01 Февраля, 2013 - 12:37:01 - перейти к сообщению
alsio пишет:
Zuldek, в том то и дело, что в update.php может быть изменено значение селекта №1 => понадобится выводить другой селект №2...

Т.е. только с помощью ajax? Не направите в сторону примеров подобного?

Почему только. Вы проделываете тоже самое, что на шаге добавления: при выборе зачения 1 показываете связанные дополнительные поля.
Варианта реализации 2:
1. При загрузке страницы вы извлекаете все дополнительные поля всех возможных значений выбранных полей. Потом по onchange значения показываете связанные с ним дополнительные поля/
2. Проделываете все тоже самое, только дополнительные поля загружаете не перед выводом страницы, а асинхронно, через AJAX-запрос. Передаете обработчику id значения поля, по нему извлекаете нежные параметры для вывода дополнительного поля (селекта), отправляете их обратно и выводите дополнительный селект, скрывая уже заполненное дополнительное поле.

Проще говоря, вы должны изначально извлечь все "селекты 2" для "селекта 1" либо извлекать их по Ajax-запросу, когда пользователь выбирает другое значение для "селекта 1".
12. IllusionMH - 01 Февраля, 2013 - 13:50:15 - перейти к сообщению
у меня складывается ощущение, что я пишу невидимые сообщения.
IllusionMH пишет:
alsio, делать это на сервере.

Ппц, столько обсуждения несуществующей проблемы: если известны значения селектов, то известны какие блоки должны быть видимы.
Правильный вариан: СРАЗУ НА СЕРВЕРЕ В update.php нужные блоки делать видимыми. В стилях скрыть все и нужным добавить style="dispaly: block"
Этот файл должен быть практически один в один с new.php, и даже можно сделать 1 файл, но проверять есть данные - выводи и позволяем изменить, если нет - сохраняем новые.

Альтернативный: имитировать событие изменения, как описано по ссылке

 

Powered by ExBB FM 1.0 RC1