如何从应用了 Select2 的选择元素中删除选项?

新手上路,请多包涵

所以,我有这个 HTML 代码:

 <input type="checkbox" id="orders_lives_in_ccs" name="orders[lives_in_ccs]" class="lives_in_ccs">
<select id="orders_shipping_from" name="orders[shipping_from]" required="required" class="shipping_from toSelect2">
    <option value="" selected="selected">-- SELECCIONAR --</option>
    <option value="MRW">MRW - COBRO EN DESTINO</option>
    <option value="DOMESA">DOMESA - COBRO EN DESTINO</option>
    <option value="ZOOM">GRUPO ZOOM - COBRO EN DESTINO</option>
</select>

我需要删除该选项 MRW .lives_in_ccs 复选框——————————————–

 $(function () {
    $('.toSelect2').select2();

    var detachedMember;
    $('.lives_in_ccs').click(function () {
        if (this.checked) {
            detachedMember = $('.shipping_from option[value="MRW"]').detach();
        } else {
            $('.shipping_from option[value=""]').after(detachedMember);
        }

        $(".secure_shipping").toggle(this.checked);
    });
});

此代码有效,但我遇到问题并且没有找到修复它的方法。让 这个 jsFiddle 做这个测试:

  • 将 SELECT 保留为默认值 --SELECCIONAR-- 并在左侧标记检查,这将起作用并将删除选项 MRW 从主 SELECT,如果您取消标记检查该值将再次出现在 SELECT 上
  • 在 SELECT 上选择 MRW (第一选择)并在左侧标记复选,这将从主 SELECT 中删除选项 MRW ,但会将选项保留为 SELECTED是错误的,因为服务器端不期望它。

那么,即使在 SELECT 元素上选择了该选项,我该如何删除它呢?有什么帮助吗?

原文由 ReynierPM 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 825
2 个回答

这是用于测试的更新小提琴: http://jsfiddle.net/fgaqgpd7/2/

这将重置 select2 输入的值:

 $('.toSelect2').select2('val','');

您可以在单击事件处理程序时应用它。基本上,如果选择了 MRW,则重置 select2 值。

 $(function () {
    $('.toSelect2').select2();
    var detachedMember;
    $('.lives_in_ccs').click(function () {
        if (this.checked) {
            if ($('.toSelect2').select2('val') == 'MRW') {
                $('.toSelect2').select2('val','');
            }
            detachedMember = $('.shipping_from option[value="MRW"]').detach();
        } else {
            $('.shipping_from option[value=""]').after(detachedMember);
        }

        $(".secure_shipping").toggle(this.checked);
    });
});

原文由 Gohn67 发布,翻译遵循 CC BY-SA 3.0 许可协议

尝试这个 :

 if($(".lives_in_ccs").is(':checked')){
    $("#orders_shipping_from option[value='MRW']").remove();
}

希望这可以帮助 :)

原文由 Syed Muhammad Zeeshan 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题