Работа с html select в режиме multiple, отличия от обычного режима

HTML select с флагом multiple позволяет сделать выбор нескольких значений. В этой статье мы рассмотрим как правильно обработать данные, используя javascript и PHP.

Вот так выглядит пример HTML кода формы для выпадающего списка с возможностью выбора нескольких значений.

В этом режиме поле select отображается браузером не как элемент с выпадающим списком. Для сравнения, посмотрите как выглядит один и тот же select в браузере без флажка multiple и с ним:

Читаем значения поля SELECT из javaScript.

В чем отличие от одиночного режима (без multiple флага)? В том и другом случаях можно прочитать значение поля через свойство элемента value. Но так мы получим только одно единственное значение. Как получить все значения, выбранные пользователем в списке?

Мы будем программно проверять включен ли флаг multiple, и в соответствии с ситуацией выбирать способ как получить значения(-ие). Для универсальности можно складывать значения в некоторый массив.  Если multiple == true — надо сканировать массив options, иначе достаточно обратиться к свойству value.

Как прочитать множественные значения, передаваемые в программу на PHP?

Если вы используете HTML код, вроде приведенного в начале статьи, то при выборе нескольких значений будут отправлены данные формы вида:

Которые в PHP будут интерпретированы как GET параметр $_GET[‘elm’] = ‘ny’. Т.е. вы получите всего одно значение.

Чтение raw данных

Если поменять метод формы на POST, то можно прочитать входные данные из потока php://input

Вы получите всю строку — «elm=msk&elm=paris&elm=london&elm=ny», но её нужно будет ещё правильно разобрать. Потому так не делают, а идут на небольшую хитрость. К имени поля в HTML добавляют квадратные скобки:

Благодаря этому приему массив $_REQUEST в PHP сразу получает переменную elm в виде массива значений. Т.е.

Мало букафф? Читайте есчо !

Идем на поклон к Хроносу или самодельный cron на javascript

Март 13, 2010 г.

Недавно я затеял некоторую деятельность по созданию он-лайновой игрушки. Это из разряда хобби, и пока вообще речь не об этом.  Возможно, я что то напишу об этом позже. В отправной точке, при создании он-лайновой игрушки, я стоял перед скромным выбором ...

Читать

Инициализация карты google после изменения размеров контейнера карты

Февраль 2, 2018 г.

Столкнулся с данной проблемой в своей работе. Опишу более подробно. Объект Гугл карты, при изменении размеров контейнера, в котором рендерится карта, не актуализирует внутренние размеры поля, от которых зависит центровка. К примеру, при уменьшении ...

Читать

Сериализация HTML строки из PHP в JS

Август 7, 2019 г.

Рассмотрим разновидность задачи по сериализации данных - мне нужно было сохранить HTML код в атрибуте контейнера, чтобы вставлять его по определенному событию в верстку. Можно было сразу вставить кусочки HTML кода в документ и далее манипулировать ...

Читать

Работаем с датами широкого диапазона в PHP

Январь 28, 2016 г.

Многие не задумываются при работе в PHP со стандартными функциями даты-времени о диапазоне их применимости (date(), time(), mktime() и т.п). Так мы можем скоро столкнуться с проблемой, подобная которой случалась уже раньше - "ошибка 2000". Я прекрасно ...

Читать
 

Комментарии к «Работа с html select в режиме multiple, отличия от обычного режима»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий: