【问题标题】:Can not change textbox value on autocomplete select无法更改自动完成选择的文本框值
【发布时间】:2015-11-27 07:49:11
【问题描述】:

我想通过自动完成更改另一个文本框选择的文本框值。我正在使用 django 1.7 和 jquery 1.9

我不擅长 javascript 我尝试了很多解决方案来使自动完成功能与 django 一起工作,但我无法更改其他文本框的值。

这是django代码

view.by

  def auto_complete(request):
   search = request.GET['term']
   products = Products.objects.all().filter(product_name__startswith=search)
   products_serialized = serializers.serialize('json', products)
   return JsonResponse(products_serialized, safe=False)

url.by

url(r'^autocomplete/$', views.auto_complete, name='Auto Complete'),

文本框

<input type="text" id="product" name="product" class="product" value="">
<input type="text" id="price" name="product" class="price" value="">

javascript函数

    function Complete(){
    $( "#product" ).autocomplete({
        select: function (e, ui) {
            $("#product").val(ui.item.label);
            return false;
        },
        minLength: 1,
        source: function (request, response) {
            $.ajax({
                url: '/autocomplete',
                data: request,
                success: function (data) {
                    var ParsedObject = $.parseJSON(data);
                    response($.map(ParsedObject, function (item) {
                        var results = item.fields.product_name ;
                        return {
                            value: results
                        };
                    }));
            },
        });
    }
});
}

【问题讨论】:

  • 自动完成功能有效吗?你能看到建议吗?试试 $(event.target).val(ui.item.value);
  • 是的,自动完成工作正常,当我选择一个选择时,“产品”值已成功更改,但我还需要在“产品”选择上更改“价格”值

标签: javascript jquery django autocomplete


【解决方案1】:

我找到了答案

function Complete(){
$( "#product" ).autocomplete({
        select: function (e, ui) {
            $("#product").val(ui.item.label);
            return false;
        },
        source: function (request, response) {
            $.ajax({
                url: '/autocomplete',
                data: request,
                success: function (data) {
                    var ParsedObject = $.parseJSON(data);
                    response($.map(ParsedObject, function (item) {
                        var name = item.fields.product_name ;
                        var price = item.fields.product_price ;
                        var count = item.fields.product_count ;
                        var the_id = item.pk ;
                        return {
                            value: name,
                            price: price,
                            count: count,
                            the_id: the_id,
                        };
                    }));
            }
    });
},
    minLength: 1,
    autoFocus: true,
        select: function ( event, ui ) {
              $('#price').val( ui.item.price );
              $('#count').val( ui.item.count );
              $('#the_id').val( ui.item.the_id );
        },
    });

【讨论】:

    猜你喜欢
    • 2012-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-17
    • 2012-11-15
    • 1970-01-01
    • 2012-12-05
    相关资源
    最近更新 更多