我正在使用 Typeahead 设置一个表单。我有两个相邻的输入字段,我需要对每个字段进行自动完成。我的 HTML 如下所示:
<select id="numerator">
<option value="presentation">presentation</option>
<option value="chemical">chemical</option>
</select>
<input id="numeratorId" class="typeahead" type="text" />
<br/>
<select id="denominator">
<option value="presentation">presentation</option>
<option value="chemical">chemical</option>
</select>
<input id="denominatorId" class="typeahead" type="text" />
每个input
字段都将通过查看 API 端点自动完成。这应该是/api/1.0/code?type=presentation&code=123
或的形式/api/1.0/code?type=chemical&code=123
。
API 调用中的type
参数值应取决于<select>
每个输入字段旁边的元素的值。
我遇到的问题是我不知道如何告诉 Bloodhoundtype
参数应该是什么。
理想情况下,我想将它传递给 Bloodhound,但我不知道该怎么做。这是我的 JavaScript:
var bnfMatches = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('value'),
queryTokenizer: Bloodhound.tokenizers.whitespace,
remote: {
url: '/api/1.0/code?',
replace: function(url, uriEncodedQuery) {
url = url + 'code=' + uriEncodedQuery;
// How to change this to denominator for denominator queries?
val = $('#numerator').val();
if (!val) return url;
return url + '&code_type=' + encodeURIComponent(val)
}
}
});
$('.typeahead').typeahead({
hint: true,
highlight: true,
minLength: 2
},
{
name: 'states',
displayKey: 'id',
source: bnfMatches.ttAdapter()
});
我会非常感谢任何建议。