检查Typeahead

时间:2017-03-21 05:20:45

标签: ajax twitter-bootstrap typeahead.js

我有这行代码,当用户在我的文本框中输入时,它将获取我数据库中的所有位置。问题是我想在用户更改文本框中的文本时验证并且在我的预先输入中不存在?

var path = "{{ route('search.location') }}";

$('input.typeahead').typeahead({
    source:  function (query, process) {
        return $.get(path, { query: query }, function (data) {
            return process(data);
        });
    }
}).blur(function () {
    if(source.indexOf($(this).val()) === -1) 
        alert('Not exists');
});

我已经使用.blur函数完成了一些研究,但我无法使其工作?

ReferenceError: source is not defined

1 个答案:

答案 0 :(得分:7)

这是本地数据的示例。如果查询至少匹配一个项目,则布尔变量某事设置为true。

$( document ).ready(function() {

var data = [
  {value: "Alabama"},
  {value: "Delaware"},
  {value: "Maine"}
];

var somethingFound = false;

$("#the-basics .typeahead").typeahead(
{
  minLength: 1,
  highlight: true 
},
{
  source: function(query, syncResults, asyncResults) {
      // use query to filter data
      var filteredData = data.filter(function(e){
        return e.value.toLowerCase().startsWith(query.toLowerCase());
      });
      console.log(filteredData.length);
      somethingFound = filteredData.length > 0;
    // return filtered data
    syncResults(filteredData);
   }
}).blur(function(){
  if (!somethingFound) {
    alert('nothing found');
  }
});
});

see also in Plunker