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
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Событие onchange для заполненного селекта
Покинул форум
Сообщений всего: 87
Дата рег-ции: Дек. 2012
Помог: 0 раз(а)
[+]
Есть 2 страницы: new.php - форма для записи данных в БД. update.php - та же форма, но уже заполненная из БД ранее введенными данными в new.php
Форма в new.php имеет разные виды полей, в т.ч. селекты, в зависимости от выбора в которых по событию onchange раскрываются/скрываются дополнительные поля формы.
Так вот при первичном вводе данных все работает, т.к. мы всегда что-то выбираем в селекте => есть событие onchange.
Вопрос, как быть с update.php ? Там значения селектов уже выбраны из БД => события onchange не происходит и доп. поля формы не раскрываются/скрываются.
Как быть в этой ситуации? Может быть здесь нужно использовать не onchange, или вообще какой-то специальный js нужен?
Прошу помощи! (если нужны какие коды/скрипты из того, что сейчас есть - выложу).
IllusionMH
Отправлено: 29 Января, 2013 - 15:16:16
Активный участник
Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011 Откуда: .kh.ua
Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010
Помог: 50 раз(а)
Не совсем понятен вопрос.
При заполнении формы у вас при заполнении некоторых полей появляются дополнительные поля.
Очевидно что в заполненной форме вы хотите вывести занесенные в неё данные, посему непонятно почему дополнительные поля должны выводиться у вас по какому-то событию.
При выборке данных для страницы вы собираете данные для формы, включая дополнительные поля и выводите их, если данные заполнены.
Если речь идет о том чтобы разворачивать дополнительные поля только при определенном действии, - ну привяжите это к любому действую, - клике по ссылке или по родительскому элементу форму.
Покинул форум
Сообщений всего: 87
Дата рег-ции: Дек. 2012
Помог: 0 раз(а)
[+]
Zuldek пишет:
Не совсем понятен вопрос
Вопрос, как произвести событие в update.php, где выбор уже загружен в селект (не выбран пользователем, а уже загружен вместе со страницей) ?
Например. new.php
Селект "Выберите ТС" => Автомобиль Появился селект "Модель" => ВАЗ
ЗАПИСАЛИ в БД
Вспомнили, что ВАЗ давно продан, и у нас КАМАЗ.
Открываем update.php (по соотв. id записи) и видим следующее:
Селект Автомобиль
Селект ВАЗ
И теперь правим второй селект на КАМАЗ.
alnik-75
Отправлено: 30 Января, 2013 - 15:19:24
Посетитель
Покинул форум
Сообщений всего: 338
Дата рег-ции: Сент. 2012 Откуда: Гродно, Беларусь
Помог: 0 раз(а)
Все равно не понимаю. Более детально объясните.
когда с помощью селектов что-то внесли в базу. Потом то, что внесено в БД, выводится опять в селектах путем добавления соответствующему оптиону значения selected.
Я правильно понимаю?
alsio
Отправлено: 31 Января, 2013 - 11:24:09
Гость
Покинул форум
Сообщений всего: 87
Дата рег-ции: Дек. 2012
Помог: 0 раз(а)
[+]
alnik-75 пишет:
Я правильно понимаю?
Все верно.
alnik-75
Отправлено: 31 Января, 2013 - 12:41:43
Посетитель
Покинул форум
Сообщений всего: 338
Дата рег-ции: Сент. 2012 Откуда: Гродно, Беларусь
Помог: 0 раз(а)
и что далее?
alsio
Отправлено: 01 Февраля, 2013 - 07:42:34
Гость
Покинул форум
Сообщений всего: 87
Дата рег-ции: Дек. 2012
Помог: 0 раз(а)
[+]
alnik-75 пишет:
и что далее?
А далее вопрос, как быть с update.php ? Там значения селектов уже выбраны из БД => события onchange не происходит и доп. поля формы не раскрываются/скрываются.
Zuldek
Отправлено: 01 Февраля, 2013 - 09:18:46
Постоянный участник
Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010
Помог: 50 раз(а)
alsio пишет:
alnik-75 пишет:
и что далее?
А далее вопрос, как быть с update.php ? Там значения селектов уже выбраны из БД => события onchange не происходит и доп. поля формы не раскрываются/скрываются.
Повторяю Вам еще раз, что если данные у вас уже сохранены в БД, то на странице update.php вам не нужно никакое событие onchange - вы выводите сразу всю форму вместе с дополнителньыми полями.
Это на странице add.php у вас:
1. Первые селект - Выбор АС
2. В зависимости от выбор в селекте 1 открываем разные дополнительные поля.
На странице update.php вам известно, что АС у вас - автомобиль, и марка его - ВАЗ, поэтому вы:
1. Выводите селект Выбор АС со значением "автомобиль"
2. Выводите под ним селект "Марка" со значением "ВАЗ".
Зачем вам событие Onchange тут для вывода уже известных дополнительных полей?
Оно вам может быть нужно только если опять будет изменено значение селекта №1и нужно будет вывести другие дополнительные поля (а не выбор марки автомобиля), либо может потребоваться при изменении значения селекта №2 (для сохранения данных по Ajax-запросу или выводу дополнительных полей к селекту №2)
Поэтому мне не понятно что тут Вам может быть не понятно.
Покинул форум
Сообщений всего: 87
Дата рег-ции: Дек. 2012
Помог: 0 раз(а)
[+]
Zuldek, в том то и дело, что в update.php может быть изменено значение селекта №1 => понадобится выводить другой селект №2...
Т.е. только с помощью ajax? Не направите в сторону примеров подобного?
Zuldek
Отправлено: 01 Февраля, 2013 - 12:37:01
Постоянный участник
Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010
Помог: 50 раз(а)
alsio пишет:
Zuldek, в том то и дело, что в update.php может быть изменено значение селекта №1 => понадобится выводить другой селект №2...
Т.е. только с помощью ajax? Не направите в сторону примеров подобного?
Почему только. Вы проделываете тоже самое, что на шаге добавления: при выборе зачения 1 показываете связанные дополнительные поля.
Варианта реализации 2:
1. При загрузке страницы вы извлекаете все дополнительные поля всех возможных значений выбранных полей. Потом по onchange значения показываете связанные с ним дополнительные поля/
2. Проделываете все тоже самое, только дополнительные поля загружаете не перед выводом страницы, а асинхронно, через AJAX-запрос. Передаете обработчику id значения поля, по нему извлекаете нежные параметры для вывода дополнительного поля (селекта), отправляете их обратно и выводите дополнительный селект, скрывая уже заполненное дополнительное поле.
Проще говоря, вы должны изначально извлечь все "селекты 2" для "селекта 1" либо извлекать их по Ajax-запросу, когда пользователь выбирает другое значение для "селекта 1".
Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011 Откуда: .kh.ua
Помог: 242 раз(а)
у меня складывается ощущение, что я пишу невидимые сообщения.
IllusionMH пишет:
alsio, делать это на сервере.
Ппц, столько обсуждения несуществующей проблемы: если известны значения селектов, то известны какие блоки должны быть видимы.
Правильный вариан: СРАЗУ НА СЕРВЕРЕ В update.php нужные блоки делать видимыми. В стилях скрыть все и нужным добавить style="dispaly: block"
Этот файл должен быть практически один в один с new.php, и даже можно сделать 1 файл, но проверять есть данные - выводи и позволяем изменить, если нет - сохраняем новые.
Альтернативный: имитировать событие изменения, как описано по ссылке
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.