如果内容匹配,请提前输入

时间:2018-09-11 14:49:05

标签: javascript coffeescript typeahead.js

我有一个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-”,如何停止秒针运行?

1 个答案:

答案 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
)