Получение всех <option> из <select>

  • Автор темы Автор темы Diplom@t
  • Дата начала Дата начала

Diplom@t

Новичок
Получение всех <option> из <select>

У меня такая задача. Есть два <select>. Один - список доступных категорий (движений и т.д.), второй - используемых. Я средствами JS добавляю во второй селект все необходимые options. После чего мне надо их все передать в php.
Как это сделать?
Я вижу два варианта:
1. Создать <input type=hidden> и средствами JS записывать туда через разделитель все что есть во втором списке.
2. При нажатии submit - при помощи JS выбрать все options.
Но есть некие неудобства:
в первом случае - слишком неудобно и для каждой страницы администрирования надо писать несколько своих JS-функций.
во втором случае выбор всего у меня не везде и не всегда работает, к тому же если сделать список multiple, то пользователь тоже сможет выбирать несколько значений,а мне это не надо.

Помогите. есть ли какой-то более удобный способ?
 
Может я торможу, но причем тут это? мне не из скрипта в хтмл надо список передать, а наоборот!
Если я не понял, прошу объяснить.

P.S. И что значит "В очередной раз"? где этот вопрос уже был?
 
Diplom@t

Вопрос не в том тогда форуме задал. Передать при сабмите формы?

Ну тогда обзови селект как массив.
 
Тогда сорри за ошибку форума. Переместите куда надо, обижаться не буду. Хм. и мне казалось я все объяснил :(
Да передать при сабмите формы.
В любом случае суть не меняется.
Как из формы передать в php скрипт все значения в <select> в виде массива (или любом другом)?
 
Diplom@t
Верно ли я понимаю, что второй select у тебя сейчас используется только для интерактивности/удобстсва, а фактически тебе нужно передать на сервер те значения из первого select-а, которые по одному за клик выбирает пользователь в течение сеанса работы со страницей?

alexhemp
А что не так с форумом?
 
Тогда, пожалуй, кроме твоих вариантов можно предложить разве что при выборе каждой новой опции отсылать отдельный запрос на сервер (на что, видимо, намекал kost), но ИМХО это здесь излишне. А что и где именно не работает в твоем втором способе?
 
вот код JS:

<input type=submit value='Сохранить партнера' style='width:50%' onmousedown='a_partners_submit();'>

function a_partners_submit() {
dObj = document.getElementById("dlist");
dObj.multiple = true;
for (i = 0; i < dObj.length; i++) {
dObj.selected = true;
}
}

при таком коде и нажатии кнопки выделяется только последний элемент. (причем несколько раз он таки сработал правильно). Если же я добавлю alert():

function a_partners_submit() {
dObj = document.getElementById("dlist");
dObj.multiple = true;
alert("ok");
for (i = 0; i < dObj.length; i++) {
dObj.selected = true;
}
}

то работает правильно, т.е. выделяет все элементы, хотя при этом само событие submit не происходит
 
Методом научного тыка нашел такой workaround - на место строчки с alert-ом вписать
Код:
self.location = self.location + '#';
P.S. Загадочная все-таки вещь - реализация select-а в IE...
 
Сорри, забыл предупредить - проверял только в IE 6, более ранних версий под рукой нету. В FF 1.5 тоже работает, но там и без этого все ОК...
 
Автор оригинала: Diplom@t
Может я торможу, но причем тут это? мне не из скрипта в хтмл надо список передать, а наоборот!
Если я не понял, прошу объяснить.

P.S. И что значит "В очередной раз"? где этот вопрос уже был?
Отвечаю.

Это класс для подгрузки из HTML средствами JavaScript в сираничку "на лету". Так вот там можно просто обратиться к скрипту php передав методом post все, что надо, и получить (млм не получить) данные ответа.

Рабочий приер - подгрузка свежих парампамов на http://parampam.rl.kiev.ua

Ну а в очередной раз, уж извените, потому что много где схожих вопросов было по загрузке содержимого "на лету".
 
Дык. kost, "схожих вопросов было по загрузке содержимого "на лету"". мне не надо загружать на лету! и в этом классе в пхпх передается одно значение - что было выбрано для того чтобы знать что грузить. а мне надо все значения одновременно передать в пхп!

В любом случае спасибо за помощ.
 
Честно говоря только сейчас понял суть вопроса до конца. Я думал, что вам надо передавать по одиночке эти элементы списка.

Здесь решение однозначно через DOM чистым JavaScript. Никакого пхп.

Просто перебираются все элементы <select>'а, а потом для каждого создается <input type=hidden name="arr["+i+"]" value=curr>, где в curr хранится значение текущего, а в i счетчик.

Я, впринципе, таким страдал при написании админчасти, где надо было неопределенное количество параметров у элемента сделать.

Оч. понравилась статья http://rtfm.vn.ua/prog/js/domintro/
 
Спасибо. Еще один вариант :) Тоже мудренный правда,но вариант.
И статейка действительно интересная :)
Сенк
 
Сверху