我正在处理 jquery 自动完成自定义数据和显示。我不知道如何让返回的数据显示为每个项目的两行。标签和值以及自动完成功能都可以正常工作,但格式化数据是我需要帮助的地方。我已经签入了 Firefox,并且 item.vcCCQualtsCustomTitle 有数据。当我尝试使用 .data 时, item.desc 似乎没有正确连接,因为它没有显示数据(我成功映射的数据)
这是代码
$(function () {
$(".cClassID").click(function () {//fires off when you click on the textbox, that the entire textbox gets selected so you don't have to backspace stuff out
$(this).focus();
$(this).select();
});
$(".cClassID").autocomplete({
source: function (request, response) {
$.ajax({
url: "/GeneralUserControls/wsClassIndex.aspx/_ClassIndexSearch_TestOnly",
data: "{ 'ClassIndex': '" + request.term + "' }",//Parm name and what is in the textbox passed in
dataType: "json",
type: "POST",
contentType: "application/json; charset=utf-8",
dataFilter: function (data) { return data; },
success: function (data) {
response($.map(data.d, function (item) {
return {
label: item.ClassTitle, //map properties used in class returned by JSON to what autocomplete wants
value: item.tblClassIndexID,
desc: item.vcCCQualtsCustomTitle
}
}))
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(errorThrown);
}
});
},
minLength: 3,
select://fires off when you make a selection
function (event, ui) {
//$("#ctl00_ContentPlaceHolder1_ucClassIndex_txtClassIndex").val(ui.item.label);
//$("#ctl00_ContentPlaceHolder1_ucClassIndex_hfClassIndexID").val(ui.item.value);
$("[id$=txtClassIndex]").val(ui.item.label);
$("[id$=hfClassIndexID]").val(ui.item.value);
$("#project-description").html(ui.item.desc);
//AppChanged(ui.item.value);//if JaxIt is not there..there is no error.. it just never runs
return false;
},
focus: function (event, ui) {//what populates the drop down
//$("#ctl00_ContentPlaceHolder1_ucClassIndex_txtClassIndex").val(ui.item.label);
//$("#ctl00_ContentPlaceHolder1_ucClassIndex_hfClassIndexID").val(ui.item.value);
$("[id$=txtClassIndex]").val(ui.item.label);
$("[id$=hfClassIndexID]").val(ui.item.value);
return false;
},
}).data('autocomplete')._renderItem = function (ul, item) {
return $('<li></li>')
.data('item.autocomplete', item)
.append(item.name + item.desc)
.appendTo(ul);
};
});
我不知道我是否需要 $("#project-description").html(ui.item.desc); 在选择:。我在我经历过的众多示例之一中看到了它,所以它留在了那里。关于如何让 .data 工作的任何帮助都会很棒。
谢谢香农
数据部分应如下所示
}).data('ui-autocomplete')._renderItem = function (ul, item) {
return $('<li>')
.data("item.autocomplete", item)
.append("<a>" + item.label + "<br/>" + item.desc + "</a>")
.appendTo(ul);
};