Подтвердить что ты не робот

Может ли опция в теге Select иметь несколько значений?

У меня есть тег select с некоторыми параметрами в HTML-форме:
(данные будут собираться и обрабатываться с использованием PHP)

Тестирование:

<SELECT NAME="Testing">  
  <OPTION VALUE="1"> One  
  <OPTION VALUE="2"> Two  
  <OPTION VALUE="3"> Three
</SELECT>

Возможно ли, чтобы опция имела несколько значений, например, когда пользователь выбирает "Один", затем несколько других значений, связанных с этой опцией, будут записаны в базу данных.

Как мне создать тег SELECT, чтобы каждый из параметров мог иметь одно значение, например следующее:

<SELECT NAME="Testing">  
  <OPTION VALUE="1" value="2010"> One  
  <OPTION VALUE="2" value="2122"> Two  
  <OPTION VALUE="3" value="0"> Three
</SELECT>
4b9b3361

Ответ 1

Один из способов сделать это, сначала один массив, 2-й объект:

    <select name="">
        <option value="{'num_sequence':[0,1,2,3]}">Option one</option>
        <option value="{'foo':'bar','one':'two'}">Option two</option>
    </select>

Отредактировано (через 3 года после ответа), чтобы поместить оба значения в формат JSON (используя JSON.stringify()) из-за жалобы на то, что мой ответ на доказательство концепции "может запутать разработчика новичка".

Ответ 2

На самом деле я действительно думал об этом сегодня, и я достиг этого, используя функцию php explode, например:

HTML-форма (в файле, который я назвал 'doublevalue.php':

    <form name="car_form" method="post" action="doublevalue_action.php">
            <select name="car" id="car">
                    <option value="">Select Car</option>
                    <option value="BMW|Red">Red BMW</option>
                    <option value="Mercedes|Black">Black Mercedes</option>
            </select>
            <input type="submit" name="submit" id="submit" value="submit">
    </form>

Действия PHP (в файле, который я назвал doublevalue_action.php)

    <?php
            $result = $_POST['car'];
            $result_explode = explode('|', $result);
            echo "Model: ". $result_explode[0]."<br />";
            echo "Colour: ". $result_explode[1]."<br />";
    ?>

Как вы видите в первом фрагменте кода, мы создаем стандартный блок выбора HTML с двумя параметрами. Каждая опция имеет 1 значение, которое имеет разделитель (в данном случае, '|') для разделения значений (в данном случае, модели и цвета).

На странице действия я взламываю результаты в массив, а затем вызываю каждый. Как вы можете видеть, я разделил их и наметил их, чтобы вы могли видеть эффект, который это вызывает.

Надеюсь, это поможет кому-то:)

Ответ 3

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

like

value ="123,1234"

и на стороне сервера отделяют их

Ответ 4

Когда мне нужно это сделать, я делаю другие значения данных-значения, а затем использую js, чтобы назначить их скрытому вводу

<select id=select>
<option value=1 data-othervalue=2 data-someothervalue=3>
//...
</select>

<input type=hidden name=otherValue id=otherValue />
<input type=hidden name=someOtherValue id=someOtherValue />

<script>
$('#select').change(function () {
var otherValue=$(this).find('option:selected').attr('data-othervalue');
var someOtherValue=$(this).find('option:selected').attr('data-someothervalue');
$('#otherValue').val(otherValue);
$('#someOtherValue').val(someOtherValue);
});
</script>

Ответ 5

возможно наличие нескольких значений в опции выбора, как показано ниже.

<select id="ddlEmployee" class="form-control">
    <option value="">-- Select --</option>
    <option value="1" data-city="Washington" data-doj="20-06-2011">John</option>
    <option value="2" data-city="California" data-doj="10-05-2015">Clif</option>
    <option value="3" data-city="Delhi" data-doj="01-01-2008">Alexander</option>
</select>

вы можете получить выбранное значение в событии изменения, используя jquery, как показано ниже.

$("#ddlEmployee").change(function () {
     alert($(this).find(':selected').data('city'));
});

Вы можете найти более подробную информацию в этом LINK

Ответ 6

Если вы хотите записать эту информацию в базу данных, то почему вам нужно иметь первичное значение и связанные с ним значения в атрибуте value? Почему бы просто не отправить основное значение в базу данных и позволить реляционной природе базы данных заботиться обо всем остальном.

Если вам нужно иметь несколько значений в OPTION s, попробуйте использовать разделитель, который не очень распространен:

<OPTION VALUE="1|2010">One</OPTION>

...

или добавить литерал объекта (формат JSON):

<OPTION VALUE="{'primary':'1','secondary':'2010'}">One</OPTION>

...

Это действительно зависит от того, что вы пытаетесь сделать.

Ответ 7

введите значения для каждого параметра, например

<SELECT NAME="val">
   <OPTION VALUE="1" value="1:2:3:4"> 1-4  
   <OPTION VALUE="2" value="5:6:7:8"> 5-8  
   <OPTION VALUE="3" value="9:10:11:12"> 9-12
</SELECT>

на стороне сервера в случае php, используйте такие функции, как explode [array] = explode ([delimeter], [опубликованное значение]);

$values = explode(':',$_POST['val']

приведенный выше код возвращает массив, имеют только числа и ':' удаляются

Ответ 8

В HTML не допускаются повторяющиеся параметры тега. Что вы можете сделать, это VALUE="1,2010". Но вам придется анализировать значение на сервере.

Ответ 9

вы можете использовать несколько атрибутов

<SELECT NAME="Testing" multiple>  
 <OPTION VALUE="1"> One  
 <OPTION VALUE="2"> Two  
 <OPTION VALUE="3"> Three