Django - JQuery 从多个字段自动完成自定义 select
Django - JQuery autocomplete custom select from multiple fields
我有一个用户搜索,可以通过代码和名称自动完成。返回的搜索结果为“{{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>
非常感谢任何帮助!
快速浏览一下 jquery autocomplete docs 就会发现您可以为 source
选项使用一个对象数组。每个对象都应该有一个 label
和 value
属性。以下内容应该可以满足您的需求。
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>
我有一个用户搜索,可以通过代码和名称自动完成。返回的搜索结果为“{{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>
非常感谢任何帮助!
快速浏览一下 jquery autocomplete docs 就会发现您可以为 source
选项使用一个对象数组。每个对象都应该有一个 label
和 value
属性。以下内容应该可以满足您的需求。
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>