我有一个typeahead.js搜索,搜索两个不同的类别(应用程序和联系人),每个类别都在后端调用json文件。我正在添加按应用程序和联系人ID进行搜索的功能,并希望阻止前三个字符分别为“ OA-”或“ OC-”的其他人触发。
searchTerms.typeahead {
hint: true
highlight: true
minLength: 3
}, {
name: 'applications'
displayKey: 'address'
valueKey: 'id'
source: searchApplications.ttAdapter()
templates:
header: '<h4 class="tt-header">Applications:</h34>',
suggestion: (data) ->
if data.external_code
'<div class="search-result-item">' + data.address + ' – ' + data.external_code + '</div>'
else
'<div class="search-result-item">' + data.address + ' <span class="btn btn-sm btn-id">OA-' + data.id + '</span></div>'
limit: 10
},
name: 'contacts'
displayKey: 'name'
valueKey: 'id'
source: searchContacts.ttAdapter()
templates: header: '<h4 class="tt-header">Contacts:</h4>',
suggestion: (data) ->
'<div class="">' + data.name + ' <span class="btn btn-sm btn-id">OC-' + data.id + '</span></div>'
limit: 10
如果第三个字符是“ OA-”或“ OC-”,如何停止秒针运行?
答案 0 :(得分:0)
我最终想出了...
该解决方案需要修改source: searchApplications.ttAdapter()
使用的Bloodhound。
在new Bloodhound
函数中,我使用prepare来运行beforeSend操作:
search = new Bloodhound(
remote:
url: '/applications.json'
prepare: (query, settings) ->
settings.url = settings.url + '?query=' + query + '&search=true'
settings.beforeSend = (e) ->
if query.substr(0,3).toLowerCase() == 'oc-'
e.abort()
return settings
)