Элемент select должен возвращать 2 значения - PullRequest
1 голос
/ 30 января 2009

У меня есть поле выбора с опциями. Значение параметров получает идентификатор элемента, который отображается в каждом параметре.
У меня есть другое значение, которое должно быть связано с этой опцией. Есть простой способ сделать это?

<select id="category" name="data[cat]">
<option value="12" label="0">A</option>
<option value="7" label="0">B</option>
</select>

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

Для получения выбранной опции я использую:

$("#category").livequery('change', function () {            
      var catId = ($(this)[0].value); 
});

Это прекрасно работает, но я просто не знаю, как получить значение метки для выбранной опции. Или, может быть, лучший способ решить эту проблему.

Ответы [ 2 ]

4 голосов
/ 30 января 2009

Один из способов - установить значение параметра в виде строки JSON, например

<select id="category" name="data[cat]">
    <option value="{value1:10, value2:20}" label="0">A</option>
    <option value="{value1:30, value2:40}" label="0">B</option>
</select>

А затем проанализируйте значение как объект JSON. Как только вы получите объект JSON, вы можете извлечь отдельное значение из него. Таким образом, вы можете добавить столько значений, сколько хотите.

4 голосов
/ 30 января 2009

Атрибут label используется некоторыми браузерами для отображения содержимого опции, поэтому в вашем списке может отображаться две опции 0.

Лучшим решением может быть следующее:

<select id="category" name="data[cat]">
    <option value="12,0">A</option>
    <option value="7,0">B</option>
</select>

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

$("#category").livequery('change', function () {            
    var values = ($(this)[0].value).split(",");
    var catId = values[0];
    var otherId = values[1];
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...