1

入力でオートコンプリートを行うには、次のようにします: in 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ませんが、結果のリストを表示する代わりに表示するだけです。多くのことを試しましたが、方法がありません!!

4

1 に答える 1

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,
            });
于 2012-06-21T19:01:49.990 に答える