Как опубликовать выборки в HTML List Box с несколькими выбранными значениями - PullRequest
6 голосов
/ 19 декабря 2008

У меня есть список в форме HTML с кнопкой Отправить. В списке есть возможность выбора нескольких объектов. Я могу выбрать несколько значений в списке, но я не знаю, как выяснить, какие значения были выбраны при отправке формы. Кроме того, я добавляю сгенерированные пользователем значения в список динамически с помощью JavaScript, и я хотел бы иметь возможность сообщить две вещи при отправке формы:

  1. Какие опции добавлены в поле пользователем?
  2. Какие значения выбраны в поле пользователем?

Возможно ли это? Спасибо.

Ответы [ 2 ]

36 голосов
/ 19 декабря 2008

Назвав ваш select в квадратных скобках, PHP (и, возможно, другие языки сервера) поместят данные в массив

например:

<form action="process.php" method="post">
  <select name="multiSelects[]" multiple="multiple" size="5">
    <option value="0">Zero</option>
    <option value="1">One</option>
  </select>
  <input type="submit" />
</form>

Выборки будут доступны в массиве $_POST['multiSelects']

4 голосов
/ 19 декабря 2008

Ниже вы найдете пример страницы.

Обратите внимание, что:

  • элементу выбора (и любому элементу формы) требуется имя, которое будет включено в сообщение.
  • будут опубликованы только выбранные опции в элементе select.

Какие значения выбираются в поле пользователем?

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

Какие опции добавляются в поле пользователем?

Как говорилось ранее, вы видите только те опции, которые были выбраны. Но как вы различаете ваши параметры и параметры пользователя? Это зависит от того, какие данные вы отправляете пользователю. Универсальный ответ - это то, что вы получаете обратно, а не отправили. Однако это может быть упрощено в зависимости от ваших данных. Поскольку параметры имеют как значение, так и текстовое свойство, можно использовать числовое значение для предварительно созданных значений. Таким образом, ваши значения будут числовыми в ответе, а пользовательские значения будут текстовой строкой. Этот подход предполагает, что ваш пользователь не будет вводить только числовое значение. Другой подход заключается в добавлении префикса ко всем сгенерированным пользователем значениям (помните, что у вас есть и значение, и текстовое поле для всех параметров)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>Test of select box</title>
    <script type="text/javascript">
      function addOpt(e) {
        var o=document.createElement("option");
        //o.value= -e.options.length;
        o.text = "Test " + e.options.length;
        o.selected=true;
        e.add(o,null);
      }
    </script>
  </head>
  <body>
    <form method="post" action="mypage.html">
      <input type="button" onclick="addOpt(this.form.myselect)" value="Add option"/>
      <br/>
      <select id="myselect" name="mydata" multiple="multiple" size="10">
        <option value="0">Test 0</option>
        <option value="1">Test 1</option>
        <option value="2">Test 2</option>
      </select>
      <br/>
      <input type="submit"/>
    </form>
  </body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...