所以,我有这个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做这个测试:
--SELECCIONAR--
并在左侧标记检查,这将起作用,如果取消选中检查,将从主SELECT中删除选项MRW
值将再次出现在SELECT MRW
(第一个选项)并在左侧标记检查,这将从主SELECT中删除选项MRW
,但将选项保留为SELECTED,即错误,因为服务器端没有预料到它。 那么,即使在SELECT元素上选择了该选项,如何删除该选项?有什么帮助吗?
答案 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();
}
}