Django jquery-ui自动完成网址更改

时间:2014-08-29 15:10:09

标签: javascript jquery django jquery-ui autocomplete

我在输入中使用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'),

如何以我的方式完成这项工作?感谢。

1 个答案:

答案 0 :(得分:0)

有一个解决方案。 这是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__()}