我的情况是我带来一些值autocomplete
从数据库,是V001/Vendor 1
,V002/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] 删除。
我来说两句