在multiselect jquery下拉列表中,我想要一个选中的项目进入一个数组,而一个未选中的项目则从该数组中删除。我做了:

var optionValues = [];
$("#myselect").change(function() {
    $("select option:selected").each(function() {
        optionValues.push($(this).val());
    });

    $('select option:not(:selected)').each(function() {
        itemtoRemove = $(this).val();
        optionValues.splice($.inArray(itemtoRemove, optionValues), 1);
    });
    $('#this').val(optionValues.join());
}).trigger( "change" );

<input type="text" id="this">

但它在文本框中什么也没有显示。任何的想法?

最佳答案

使用map()创建数组并在每次更改时还创建一个全新的数组要容易得多,因此您不必费心寻找要删除的数组的特定元素。尝试这个:

var optionValues = [];
$('#myselect').change(function() {
    optionValues = $('option:selected', this).map(function() {
        return this.value;
    }).get();
    $('#this').val(optionValues.join());
}).trigger('change');


Example fiddle

07-24 17:53