2014-07-18 103 views
5

我有兩個多個select2框,box1選項動態填充,當我從這個選擇框中選擇任何選項,它應該被添加到新的Box2。該場景按需要工作。我面臨的問題是。當我從Box1中刪除任何選定的項目時,我可以將其從Box2中刪除。但是,如果在Box2中選擇了該項目,它仍然存在。例如:A,B,C是框1中的選定值,框2被填充A,B,C。如果我在Box 2中選擇B,c,並且如果我從Box1中刪除B.我的Box2物品現在將是AC。但B,C仍然會在Box2中保持選中狀態。從多個select2框中刪除選定的項目從另一個多選擇2框中刪除選定的項目

任何人都可以幫助我解決這個棘手的問題。

$("#Box1").on("change", function() { 

    var box1List = $('#Box1').val(); 

    $('#Box2').empty(); 

    for (var key in box1List) { 
     var valueField = box1List[key]; 
     var textField = $("#Box1 > option[value='"+valueField+"']").text(); 
     $("#Box2").append($('<option>', {value: valueField, text: textField})); 
    } 
}); 



$("#Box1").on("select2-removed", function(e) { 

    console.log("removed val=" + e.val + " choice=" + e.choice.text); 

    $('#Box2 option[value="'+e.val+'"]').remove(); 

}); 
+0

看看這個鏈接,嘗試使用內置的回調事件。 http://runnable.com/UmuP-67-dQlIAAFU/events-in-select2-for-jquery –

+0

感謝Siva.G我已經提到這個鏈接。但它有助於解決我的問題。 – Gikar

+0

可以請你在[fiddle](http://jsfiddle.net/)中做一些演示,到目前爲止你已經嘗試了一下 –

回答

5

後你改變孩子選擇二<select>元素<option>元素,你應該調用它的.change()得到它更新其顯示。

$('#Box2').change(); 

但在你的情況下,你可能還想在刪除並重新添加選項後恢復Select2的值。

$("#Box1").on("change", function() { 
    var val = $('#Box2').select2('val'); 
    $('#Box2').empty(); 
    $.each($('#Box1').select2('data'), function(i, item) { 
     $("#Box2").append($('<option>', {value: item.id, text: item.text})); 
    }); 
    $('#Box2').select2('val', val); 
}); 

當您使用.select2('val', val)設置的值,你不需要調用.change()

jsfiddle

2

我引用了Pierre de LESPINAY的帖子 Glideh。我試圖申請我的項目。

new_data = $.grep($('#my_input').select2('data'), function (value) { 
    return value['id'] != id_to_remove; 
}); 
$('#my_input').select2('data', new_data); 

它工作正常。

相關問題