如何格式化自动完成小部件输入到文本框的值?
以下是代码:
$(function() {
var persons = [
{
"salutation": "Mr."
"name": "John Smith"
},
{
"salutation": "Ms."
"name": "Mary Doe"
},
{
"salutation": "Mrs."
"name": "Ana Smith"
}
];
$("input[name=text]").autocomplete({
source: persons
}).data("autocomplete")._renderItem = function(ul, item) {
return $("<li>").data("item.autocomplete", item).append("<a>" + item.name + "</a>").appendTo(ul);
};
});
触发select事件后,如何将对象的称呼和名称属性添加到文本框中?
由于
答案 0 :(得分:0)
正如您在official documentation here中看到的那样,item
的{{1}}参数包含_renderItem
的属性,因此您可以像这样访问它们:
current object
和item.salutation
并将它们设置为输入值。
以下是官方示例中的一小部分代码:
item.name
<强>更新强>
我已经实施了您想要的解决方案。请在下面查看。
var projects = [
{
value: "jquery",
label: "jQuery",
desc: "the write less, do more, JavaScript library",
icon: "jquery_32x32.png"
},
{
value: "jquery-ui",
label: "jQuery UI",
desc: "the official user interface library for jQuery",
icon: "jqueryui_32x32.png"
}
];
$( "#project" ).autocomplete({
source: projects,
select: function( event, ui ) {
$( "#project" ).val( ui.item.label );
$( "#project-id" ).val( ui.item.value );
$( "#project-description" ).html( ui.item.desc );
$( "#project-icon" ).attr( "src", "images/" + ui.item.icon );
return false;
}
// ...
})
// ...
.autocomplete( "instance" )._renderItem = function( ul, item ) {
return $( "<li>" )
.append( "<a>" + item.label + "<br>" + item.desc + "</a>" )
.appendTo( ul );
};
$(function() {
var persons = [{
"salutation": "Mr.",
"label": "John Smith"
}, {
"salutation": "Ms.",
"label": "Mary Doe"
}, {
"salutation": "Mrs.",
"label": "Ana Smith"
}];
$("input[type=text]").autocomplete({
minLength: 0,
source: persons,
focus: function(event, ui) {
$(this).val(ui.item.label);
return false;
},
select: function(event, ui) {
$(this).val(ui.item.salutation + ' ' + ui.item.label);
return false;
}
})
.data("autocomplete")._renderItem = function(ul, item) {
return $("<li>")
.data("item.autocomplete", item)
.append("<a>" + item.salutation + "<br>" + item.label + "</a>")
.appendTo(ul);
};
});