Rey*_*rPM 6 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>
Run Code Online (Sandbox Code Playgroud)
我需要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);
});
});
Run Code Online (Sandbox Code Playgroud)
该代码有效,但我遇到了问题并且没有找到解决方法。让这个jsFiddle 做这个测试:
--SELECCIONAR--在左侧标记复选标记,这将起作用并将MRW从主 SELECT 中删除该选项,如果取消标记复选标记,该值将再次出现在 SELECT 上MRW(第一个选择)并在左侧标记复选标记,这将从MRW主 SELECT 中删除该选项,但会将选项保留为 SELECTED,这是错误的,因为服务器端不期望它。那么,即使在 SELECT 元素上选择了该选项,如何删除该选项呢?有什么帮助吗?
这是用于测试的更新小提琴:http://jsfiddle.net/fgaqgpd7/2/
这将重置 select2 输入的值:
$('.toSelect2').select2('val','');
Run Code Online (Sandbox Code Playgroud)
您可以通过单击事件处理程序来应用它。基本上,如果选择了 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);
});
});
Run Code Online (Sandbox Code Playgroud)