select2 - 如果多个选项共享一个值,则返回不正确的选定选项

select2 - incorrect selected option returned if multiple options share a value

本文关键字:选项 返回 不正确 如果 共享 select2 一个      更新时间:2023-09-26

我有一个具有多个选择组的选择元素,其中不同选择组中的选项可能具有相同的值。例如(请参阅"苹果"和"马铃薯"选项):

<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 并选择"Potato"时,$('#food_select').find(:selected)返回"Apple"选项,这是第一个值为"1"的选项。

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

是否有针对此行为的解决方法或修复程序?

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

谢谢。

来自 select2 的合作者 Kevin Brown:

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

幸运的是,它在 4.0 中得到了修复,它将很快进入第一个测试版

因此,解决方案是使用单独的选择,直到 select2 4.0 发布。