Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 带有Django的Jquery自动完成插件(Trey Piepmeier解决方案)_Javascript_Html_Django_Jquery Plugins_Jquery Autocomplete - Fatal编程技术网

Javascript 带有Django的Jquery自动完成插件(Trey Piepmeier解决方案)

Javascript 带有Django的Jquery自动完成插件(Trey Piepmeier解决方案),javascript,html,django,jquery-plugins,jquery-autocomplete,Javascript,Html,Django,Jquery Plugins,Jquery Autocomplete,因此,我的代码基于Trey的解决方案: 剧本是: <script> $(function() { $('#id_members').autocomplete('{{ object.get_absolute_url }}members/lookup', { dataType: 'json', width: 200, parse: function(data) {

因此,我的代码基于Trey的解决方案:

剧本是:

    <script>
        $(function() {
        $('#id_members').autocomplete('{{ object.get_absolute_url }}members/lookup', {
            dataType: 'json',
            width: 200,
            parse: function(data) {
                return $.map(data, function(row) {
                    return { data:row, value:row[1], result:row[0] };
                });
            }
            }).result(
                function(e, data, value) {
                    $("#id_members_pk").val(value);
                }
            );
        }
    );
   </script>
问题是:
它会在初始查找后停止优化搜索结果。 例如:
如果我将len(value)>2,在我输入第三个字符后,它会给我一个建议列表。但如果我继续输入第4或第5个字符,建议列表不会改变


关于原因有什么建议吗?

对于服务器端,我建议您查看一个应用程序

我以jquery autocomplete可以更容易解析的格式从视图端传递一个字符串来解决这个问题

def members_lookup(request, pid):
    results = ''
    if request.method == "GET":
        if request.GET.has_key(u'q'):
            value = request.GET[u'q']
            # Ignore queries shorter than length 1
            if len(value) > 2:
                model_results = Member.objects.filter(
                                Q(user__first_name__icontains=value) | Q(user__last_name__icontains=value)
                               )
                for r in model_results:
                    results += '%s|%s\n' % (r.user.get_full_name(), r.id)

    return HttpResponse(results, mimetype='text/html')
然后在客户端:

<script>
$().ready(function() {
    $("#id_members").autocomplete("{{ object.get_absolute_url }}members/lookup/", {
        width: 260,
        minChars: 2,
        selectFirst: false
    });

    $("#id_members").result(function(event, data, formatted) {
        if (data)
            $(this).parent().next().find("input").val(data[1]);
    });
});
</script>

$().ready(函数()){
$(“#id_members”).autocomplete({{object.get_absolute_url}}members/lookup/”{
宽度:260,
明查斯:2,
selectFirst:false
});
$(“#id_成员”).result(函数(事件、数据、格式化){
如果(数据)
$(this).parent().next().find(“input”).val(数据[1]);
});
});

问题是服务器端还是客户端?如果是服务器端,在
/manage.py shell
中运行查询时是否会得到相同的结果?您输入的字符是否会导致第4个和第5个字符的不同结果?问题在于客户端。特别是代码的解析部分。我注意到(使用Firebug)当我删除了有问题的代码时,它会像预期的那样为每个键入的字符命中数据库,但它不会解析响应。。。是的,第4和第5个字符应该会进一步缩小结果列表的范围。
<script>
$().ready(function() {
    $("#id_members").autocomplete("{{ object.get_absolute_url }}members/lookup/", {
        width: 260,
        minChars: 2,
        selectFirst: false
    });

    $("#id_members").result(function(event, data, formatted) {
        if (data)
            $(this).parent().next().find("input").val(data[1]);
    });
});
</script>