我正在使用jQ UI Autocompletebox小部件。
这是使用ACB的jQ:
$('.drug-name').autocomplete({
source: function (request, response) {
$.ajax('/Drugs/JsonIndex/',
{
dataType: 'json',
data: { searchBy: request.term },
success: function (data) {
response($.map(data, function (item) {
return { value: item.Name, label: item.Name };
/*1****************/
}));
},
select: function (event, ui) {
/*2****************/
},
messages: {
noResults: '',
results: ''
},
_renderItem: function (ul, item) {
/*3****************/
return $('<li>')
.html(item.label)
.prop('title', item.description)
.data('drug-id', item.value)
.appendTo(ul);
}
});
}
});
我已经标记了我想谈的那些地方:
data
参数包含属性Id
,Name
和Description
。我希望生成的li
使用Name
作为显示值,将Description
作为工具提示(title="Description"
),并将Id
设置为附加数据字段答案 0 :(得分:0)
在研究了一些之后,我发现_renderItem
代码段应附加如下:
$('.drug-name').autocomplete({
source: function (request, response) {
$.ajax('/Drugs/JsonIndex/',
{
dataType: 'json',
data: { searchBy: request.term },
success: function (data) {
response($.map(data, function (item) {
return {
value: item.Name,
label: item.Name,
description: item.Description,
id: item.Id
};
}));
},
select: function (event, ui) {
},
messages: {
noResults: '',
results: ''
}
});
}
}).data("ui-autocomplete")._renderItem = function (ul, item) {
return $('<li>')
.html(item.label)
.prop('title', item.description)
.data('drug-id', item.id)
.appendTo(ul);
};