如何从应用了Select2的SELECT中删除选项?

时间:2014-10-13 19:03:51

标签: javascript jquery jquery-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);
    });
});

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

  • 保留SELECT的默认值为--SELECCIONAR--并在左侧标记检查,这将起作用,如果取消选中检查,将从主SELECT中删除选项MRW值将再次出现在SELECT
  • 在SELECT上选择MRW(第一个选项)并在左侧标记检查,这将从主SELECT中删除选项MRW,但将选项保留为SELECTED,即错误,因为服务器端没有预料到它。

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

3 个答案:

答案 0 :(得分:3)

以下是测试的更新小提琴: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);
    });
});

答案 1 :(得分:0)

试试这个:

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

希望这会有所帮助:)

答案 2 :(得分:0)

对于我来说是Select2 4.0.13版本:

$('#my-form').on('change', '.checkbox-item', updateDropdown);

HTML对象:

<input type="checkbox" name="checkbox_1" id="checkbox_1" value="1" class="form-control checkbox-item" data-text="Label" />

事件功能:

    function updateDropdown(e) {
    if (e.target.checked) {
        if ($('#dropdown').select2('val') == $(this).val()) {
            $('#dropdown').select2('val', '');
        } else {
            var newOption = new Option($(this).attr('data-text'), $(this).val(), false, false);
            $('#dropdown').append(newOption).trigger('change');
        }
    } else {
        $('#dropdown option[value="' + $(this).val() + '"]').detach();
    }
}