javascript - 使用 jquery 在多选下拉列表中禁用 optgroup 中未选择的选项

标签 javascript jquery drop-down-menu

在我的多选中,我有几个 optgroups 。 我想让用户只从 optgroup 中选择一个选项。 一旦用户从任何 optgroup 中选择任何一个选项,我想禁用同一组中的所有其他选项,而不是其他 optgroups。 我尝试了以下代码 HTML

    <option selected="selected" label="All" value="">All</option>
<optgroup label="fruits" class="fruit">
    <option label="apple" value="1">Apple</option>
    <option label="pear" value="2">Pear</option>
    <option label="orange" value="3">Orange</option>
</optgroup>
<optgroup label="berries" class="berries">
    <option label="strawberry" value="4">Strawberry</option>
    <option label="raspberry" value="5">Raspberry</option>
    <option label="blueberry" value="6">Blueberry</option>
</optgroup>

Javascript:

$("#fruits").change(function () {
    $("#fruits option").filter(":selected").parent("optgroup").prop('disabled', true);
});

Jsbin链接 jsbin

上面的代码禁用了来自特定 optgroup 的所有选项,我希望所选的选项不应该被禁用。

最佳答案

JS Bin

而不是这样做:

.parent('optgroup')

这样做:

.siblings('option')

关于javascript - 使用 jquery 在多选下拉列表中禁用 optgroup 中未选择的选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18793424/

相关文章:

javascript - 对具有固定位置值的 DOM 元素进行排序(例如 : left:20px)

javascript - 如何使用基本 KO 可观察数组来更新绑定(bind)到选择选项下拉列表的多个计算可观察数组

javascript - 如何获取输入值并将其放入 angularJS 中的变量中?

javascript - 已在控制台日志上打印的 undefined variable

javascript - CSS Transition 延迟 AngularJs 中的 DOM/范围更新

jquery - 将 DIV 内容居中到视口(viewport)

jquery - 如何在asp.net中构建数据库驱动的Jquery下拉菜单

javascript - 映射的下拉菜单不会显示在最前面

javascript - 当用户停止点击时触发事件

javascript - 从最后一个元素到第一个元素添加到数组