Che*_*uis 5 django jquery jquery-autocomplete
我正试图在django应用程序中使用jquery ui自动填充搜索一些项目.我看过这个问题,我就像自动完成文档一样关注.我对插件或其他东西不感兴趣.我懂了.
在views.py中:
def search_view(request):
q = request.GET['term']
ret = []
listado = Model.objects.filter(descripcion__istartswith=q).order_by("descripcion")
for l in listado:
ret.append({'label':l.descripcion, 'value':l.id})
return HttpResponse(simplejson.dumps(ret), mimetype='application/json')
Run Code Online (Sandbox Code Playgroud)
在我的模板中,我有类似的东西
js:
$("#auto_material").autocomplete({
source:'{% url search_view %}',
minLength: 2,
select: function( event, ui ) {
$("#auto_material").val(ui.item.label);
$("#id_material").val(ui.item.value);
}
});
Run Code Online (Sandbox Code Playgroud)
html:
<input type="text" id="auto_material" name="material" class="campo" style="width:99%;"/>
<input type="hidden" id="id_material" />
Run Code Online (Sandbox Code Playgroud)
搜索项目中的所有内容都可以正常工作,但是当我尝试使用ui.item.label设置文本输入值时,它会继续将ui.item.value放在文本输入上,而不是标签上.
任何的想法?自动完成对象上的"select"事件是否可以覆盖?任何的想法?
提前致谢.
来自自动完成文档:
标签属性显示在建议菜单中。当用户选择一个项目时,该值将被插入到输入元素中。
对于select回调:
从菜单中选择某个项目时触发。默认操作是将文本字段的值替换为所选项目的值。
取消[原文如此]此事件会阻止更新值,但不会阻止菜单关闭。
强调我的(他们的拼写错误)。在 jQuery-UI 自动完成源代码中,我们发现:
if ( false !== self._trigger( "select", event, { item: item } ) ) {
self.element.val( item.value );
}
Run Code Online (Sandbox Code Playgroud)
item.value因此,小部件将在事件处理程序返回后将文本输入的值设置为select。当然,除非(如上面的文档中所述)您的事件处理程序返回false. 尝试将您的select处理程序调整为如下所示:
select: function( event, ui ) {
$("#auto_material").val(ui.item.label);
$("#id_material").val(ui.item.value);
return false; // <--------------------- Add this
}
Run Code Online (Sandbox Code Playgroud)
这是有记录的行为,因此应该是安全的。