我已经找到了自定义返回值的最佳做法是创建解析函数。这使您可以使用返回的JSON执行您想要的操作。在这个示例代码中,我没有提到ajax调用,但是如果需要的话,我也可以添加它。 jQuery UI自动完成查找标签和值实体。您可以根据需要将其中任意一个放入,或者根据需要进行一些自定义操作。
var myStuff = [{
"uid": "123",
"UserName": "xxx"},
{
"uid": "124",
"UserName": "yyy"}];
function imAutocompleteJSONParse(data) {
var rows = [];
var rowData = null;
var dataLength = data.length;
for (var i = 0; i < dataLength; i++) {
rowData = data[i];
rows[i] = {
label: rowData.UserName,
value: rowData.UserName
};
}
return rows;
}
$("#Txt1").autocomplete({
source: function(request, response) {
var rows = imAutocompleteJSONParse(myStuff);
return response(rows);
},
minLength: 2
});
为了清楚起见,我把这个小提琴页面,所以你可以看到它的工作:http://jsfiddle.net/MarkSchultheiss/TRKeE/
现在,当我怀疑你想要做一些自定义/不同的东西的结果,我有创建了如何使用自定义值工作这一习俗例如:http://jsfiddle.net/MarkSchultheiss/TRKeE/2/
不同的是,我改变了解析功能,并增加了一个新的自动完成选项。
var myStuff = [{
"uid": "123",
"UserName": "xxx"},
{
"uid": "124",
"UserName": "yyy"}];
function imAutocompleteJSONParse(data) {
var rows = [];
var rowData = null;
var dataLength = data.length;
for (var i = 0; i < dataLength; i++) {
rowData = data[i];
rows[i] = {
uid: rowData.uid,
UserName: rowData.UserName,
label: rowData.UserName,
value: rowData.uid
};
}
return rows;
}
$("#Txt1").autocomplete({
source: function(request, response) {
var rows = imAutocompleteJSONParse(myStuff);
return response(rows);
},
select: function(event, ui) {
var hasValue = (ui.item.value != undefined && ui.item.value != "" && ui.item.value != null);
if (hasValue) {
var focusedElement = $(this);
focusedElement.val(ui.item.label);
$('#labelResult').text(ui.item.label);
$('#valueResult').text(ui.item.label);
$('#customResult').text(ui.item.uid + ":" + ui.item.UserName);
return false;
}
else {
return false;
}
},
minLength: 2
});
这个JSON来自ajax调用吗? –
是它来自ajax调用 –