防止对空格的aaax调用typeahead.js

Mai*_*mad 6 javascript ajax jquery twitter-bootstrap typeahead.js

我一直在typeahead.js使用BloodHound remote选项加载和加载数据.

寄托都正在按预期不同的是,当我输入only spacestextbox键盘缓冲仍sends ajax call.

我想知道是否有方法,prevent ajax call如果有only spaces文本框.我正在寻找类似的行为trim.

这是我的代码.我试过使用prepare功能,但没有运气.

var dataSource = new Bloodhound({
    datumTokenizer: Bloodhound.tokenizers.obj.whitespace('ProductID', 'ProductName'),
    queryTokenizer: Bloodhound.tokenizers.whitespace,
    remote: {
              url: urlVar + "LoadAllProductByProductName/%QUERY",
              wildcard: '%QUERY',

            },
    sufficient: 3,
   });

const $tagsInput = $('.txtProductName')
$tagsInput.typeahead({
   minLength: 3,
   source: dataSource,
   hint: false,
   highlight: true,
   isBlankString: false
   },
   {
      limit: 10,
      source: dataSource,
      name: 'dataSource',
      display: function (item) {
         return item.ProductName
      },
      suggestion: function (data) {
         return '<div>' + data.ProductName + '–' + data.ProductID + '</div>'
      },

});
Run Code Online (Sandbox Code Playgroud)

Cha*_*adT 2

remote属性有一个prepare函数,您可以在通过线路进行调用之前使用该函数来处理此更改。

举个例子:

function createBloodHoundConfig(options) {
    return {
        datumTokenizer: Bloodhound.tokenizers.obj.whitespace('Name'),
        queryTokenizer: Bloodhound.tokenizers.whitespace,
        identify: options.identify,
        sufficient: 8,
        remote: {
            url: options.url,
            prepare: function (query, settings) {
                settings.url = settings.url.replace("{q}", query.trim());
                return settings;
            }
        },
    };
}
Run Code Online (Sandbox Code Playgroud)

请注意,在这种情况下,您不提供该wildcard属性,因为它实际上是进行令牌替换的简写。