过滤自动完成数据源

皮肤

我的情况是我带来一些值autocomplete从数据库,是V001/Vendor 1V002/Vendor 2,...

所以我想要的是,如果用户已经V001/Vendor 1在第一个文本框中选择了,那么他应该不能V001/Vendor 2在第二个文本框中选择相同的用户这是它的样子

供应商

另外,请参阅我在jquery中的自动完成代码

autocompleteOptions = {
    minLength: 3,
    source: function (request, response) {
        var term = $.trim(request.term);
        $.ajax({
            //receives json array answer from the url
            url: AppConfig.PrefixURL + "App/GetVendorList",
            data: { "VENDORNAME": "" + extractLast(term) + "" },
            dataType: "json",
            type: "POST",
            success: function (data) {
                var datalist = JSON.parse(data);
                response($.map(datalist, function (element, index) {
                    return {
                        label: element.VENDORNAME,
                        value: element.VENDORCODE + "/" + element.VENDORNAME
                    };
                }));
            },
            error: function () {
                // added an error handler
                response($.ui.autocomplete.filter(
                    ["VENDORNAME", "VENDORCODE"]
                    , extractLast(term)));
            }
        });
    },
    select: function (e, u) {
        if (u.item.value == "") {
            return false;
        }
    },
    change: function (event, ui) {
        $(this).val((ui.item ? ui.item.value : ""));        
        if ($(this).val().trim() == "" || $(this).val() == null || $(this).val() == "null") {
            var name = $(this).attr('id');
            var id = parseInt(name.substr(13, name.length));
            $('#spFromDate' + id).val('');
            $('#spToDate' + id).val('');
        }
    },

};

$("#txtVendorName1").autocomplete(autocompleteOptions);

请提出如何实现这一目标。

教育

通过在第二个自动完成功能中删除先前选择的内容,可以实现所需的功能。您可以在返回自动完成功能之前对数据列表使用过滤器。

因此,首先使用each来推送数组中已选择的所有元素alreadySelected

var alreadySelecte = [];
....

$('[id^=txtVendorName]').each(function(){
   alreadySelected.push($(this).val());
})

并使用此数组,您可以过滤其他人自动完成

datalist = datalist.filter( item => !alreadySelected.includes(`${item.VENDORCODE}/${item.VENDORNAME}`))

因为这是值:value: element.VENDORCODE + "/" + element.VENDORNAME您正在为每个自动完成输入设置

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章