我在输入中使用jquery-ui自动完成功能。它适用于自动完成,但是当我选择输入的完整版本并按回车键时,它会转到一个链接/?n=something
,例如我想将此链接更改为/baslik/something
它应该转到每个输入的/baslik/something
。我的模板文件中有这些:
<script>
$(document).ready(function(){
$( "input#n" ).autocomplete({
source: "{% url "autoco" %}",
minLength: 2
});
});
</script>
<div class="ui-widget">
<input id="n" type="text" name="n"/>
</div>
<script type="text/javascript">
document.getElementById("n").addEventListener("change", function(){
this.form.setAttribute("action", "/baslik/" + this.value);
});
</script>
上面代码的最后一个js部分是在用户点击输入时转换输入/baslik/something
但是如果我不从自动完成更改输入,它就会这样做。
观点:
def autoco(request):
term = request.GET.get('term')
bslk = Baslik.objects.filter(title__istartswith=term)
res = []
for b in bslk:
dict = {'id':b.id, 'label':b.__unicode__(), 'value':b.__unicode__()}
res.append(dict)
return HttpResponse(simplejson.dumps(res))
网址:
url(r'^autoco/$', autoco, name='autoco'),
我怎样才能以我的方式完成这项工作?谢谢。
有一个解决方案。这是jquery-ui自动完成的js部分:
<script>
$(document).ready(function(){
$( "input#n" ).autocomplete({
source: "{% url "autoco" %}",
minLength: 2,
select:function(e,ui) {
location.href = ui.item.the_link;
// console.log(ui.item.the_link);
}
});
});
</script>
我们向其添加了the_link属性,我们应该在我们的视图中描述它:这部分:
dict = {'id':b.id, 'label':b.__unicode__(), 'value':b.__unicode__()}]
应该是这样的:
dict = {'id':b.id, 'label':b.__unicode__(), 'value':b.__unicode__(), 'the_link':"baslik/"+b.__unicode__()}