要对输入进行自动完成,我这样做:
在views.py
:
def getpositions(request):
if request.is_ajax():
query = request.GET.get("term", "")
positions=Position.objects.filter(name__icontains=query)
results = []
for position in positions:
position_json={}
position_json['name']=position.name
results.append(position_json)
data=simplejson.dumps(results)
else:
data = 'error'
return HttpResponse(data, mimetype='application/json')
template
中的:
$(document).ready(function(){
$("#positions").autocomplete({
source: "{% url CompanyHub.views.getPositions%}",
success: function( data ) {
response( $.map( data, function( item ) {
return {
label: item.name,
value: item.name
}
}));
},
minLength: 2,
});
});
和#positions
是:<input type="text" id="positions" />
每件事都没问题,但它只是显示Undefined
而不是显示结果列表,我尝试了很多东西,但没办法!!
答案 0 :(得分:0)
jQuery UI自动填充功能没有用于格式化数据的success
选项。在此处查看选项列表http://jqueryui.com/demos/autocomplete/。相反,你可以使用source
选项的回调函数,自己处理你自己的ajax调用,并按照你想要的格式化数据。
$("#positions").autocomplete({
source: function( req,resp ) {
$.get("{% url CompanyHub.views.getPositions%}",
{term:req.term},function(data){
resp( $.map( data, function( item ) {
return {
label: item.name,
value: item.name
};
})
);
});
},
minLength: 2,
});