隐藏已选择的项目jQuery自动完成

时间:2014-12-03 10:34:11

标签: javascript jquery autocomplete

我正在使用jQuery自动完成功能,允许用户在填写表单时搜索并选择多个项目。选择项目后,用户可以从所选项目列表中删除该项目。

我希望能够做的是隐藏未来搜索中的所选项目,并在将来的搜索中显示项目,如果项目被移除:

这是我目前的剧本:

var commissioner = [];

$.getJSON('/Commissioner/AutocompleteSearch')
    .done(function (data) {
        commissioner = data;
        $('#commissioner').autocomplete({
            minLength: 3,
            source: function (request, response) {
                var results = $.ui.autocomplete.filter(commissioner, request.term);
                response(results.slice(0, 10));
            },
            select: function (event, ui) {
                $(this).val('');
                var li = '<li>';
                li += '<input type="hidden" name="CommissionerId" value="' + ui.item.id + '" />'
                li += ui.item.label + '<span class="delete">Delete</span>';
                li += '</li>';
                $('#selectedCommissioners').append(li);
                $('#selectedCommissioners li.none').hide();
                return false;
            }
        })
    });

$('#selectedCommissioners').on('click', '.delete', function () {
    var $el = $(this).parent();
    $el.remove();

    if ($('#selectedCommissioners li').length == 1) {
        $('#selectedCommissioners li.none').show();
    }
});

1 个答案:

答案 0 :(得分:0)

在源函数中,您应该在结果集上运行另一个filter,删除您选择中已有的结果。因此,您可能希望以结果集中获得的格式保留所选值的集合,使它们与1:1具有可比性