0

我有一个带有多个 optgroup 的 select 元素,其中不同 optgroup 中的选项可能具有相同的值。例如(参见“Apple”和“Potato”选项):

<select data-placeholder="Fruit/Veg" id="food_select">
  <option value=""></option>

  <optgroup label="Fruits">
    <option data-params="{'selected_type':'Fruit'}" value="1">Apple</option>
    <option data-params="{'selected_type':'Fruit'}" value="2">Pear</option>
    <option data-params="{'selected_type':'Fruit'}" value="3">Banana</option>
  </optgroup>

  <optgroup label="Veg">
    <option data-params="{'selected_type':'Veg'}" value="1">Potato</option>
    <option data-params="{'selected_type':'Veg'}" value="4">Cabbage</option>
    <option data-params="{'selected_type':'Veg'}" value="5">Bean</option>
  </optgroup>
</select>

使用普通选择,尝试使用 jQuery 查找所选选项会产生正确的结果。 $('#food_select').find(:selected)

但是,当应用 select2 并选择$('#food_select').find(:selected)了 'Potato' 时,返回 'Apple' 选项,这是第一个值为 '1' 的选项。

所有其他选定的选项都可以正常工作,因此 select2 似乎没有正确处理重复值。我创建了一个展示这种行为的 JSFiddle,位于:http: //jsfiddle.net/e57m9cax/

这种行为是否有解决方法或修复方法?

我可以将其拆分为两个单独的选择元素,但不是出于 UX 原因。任何方向将不胜感激。

谢谢。

4

1 回答 1

0

来自 select2 的合作者 Kevin Brown:

这是一个已知问题,由于 3.5 的内部结构如何,它无法在 3.x 版本中修复。

幸运的是,它已在 4.0 中修复,不久将进入第一个测试版

所以解决这个问题的方法是在 select2 4.0 发布之前使用单独的选择。

于 2015-01-05T03:27:51.773 回答