【问题标题】:Django - JQuery autocomplete custom select from multiple fieldsDjango - 来自多个字段的 JQuery 自动完成自定义选择
【发布时间】:2021-09-25 23:07:23
【问题描述】:

我有一个按代码和名称自动完成的用户搜索。搜索结果返回为“{{ticker}} - {{name}}”。选择结果时,我希望它只填写股票手,当前填充它当前填充“{{{{ticker}} - {{name}}”。

这是我的python代码:

if 'term' in request.GET:
    tickers = Company.objects.filter(ticker__istartswith = request.GET.get('term')) | Company.objects.filter(name__istartswith = request.GET.get('term'))
    companies = []
    for ticker in tickers:
        companyTicker = ticker.ticker +  " - " + ticker.name
        companies.append(companyTicker)
    return JsonResponse(companies, safe=False)

这是我的javascript:

    <script>
    $( function() {
      $( "#ticker3" ).autocomplete({
        source: '{% url "financials:get_financials" %}',
        select: function (event, ui) {
            ticker.ticker
        }
      });
    } );
    </script>

非常感谢任何帮助!

【问题讨论】:

  • 您可以在 json 响应中将 companyTicker 作为字典返回。这样您就可以轻松地相互独立地引用代码和名称。 companyTicker = {'ticker': ticker.ticker, 'name': ticker.name}
  • 你能给出一个完整的例子作为答案吗?我试过了,但仍然不知道如何将它用作选择器。
  • 对不起。我上面的评论不适用于 jquery 自动完成功能。我会在下面回答。

标签: javascript python jquery django jquery-ui-autocomplete


【解决方案1】:

快速查看jquery autocomplete docs 会发现,您可以为source 选项使用对象数组。每个对象都应该有一个labelvalue 属性。以下内容应该可以满足您的需求。

if 'term' in request.GET:
    tickers = Company.objects.filter(ticker__istartswith = request.GET.get('term')) | Company.objects.filter(name__istartswith = request.GET.get('term'))
    companies = []
    for ticker in tickers:
        label = f"{ticker.ticker} - {ticker.name}"
        companyTicker = {'label': label, 'value': ticker.ticker}
        companies.append(companyTicker)
    return JsonResponse(companies, safe=False)

然后您可以在您的 javascript 中删除 select 选项:

  <script>
      $(function () {
          $("#ticker3").autocomplete({
              source: '{% url "financials:get_financials" %}',
          });
      });
  </script>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-26
    相关资源
    最近更新 更多