Я работал с typeahead.js
и загружал данные, используя BloodHound remote
.Предотвращение вызова ajax на пустые места typeahead.js
Everthing работает как ожидалось, за исключением случаев, когда я ввожу only spaces
в textbox
typeahead still 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>'
},
});
Почему это проблема для отправки вызова, когда есть пробелы? Предположительно, пользователь не получит никаких результатов. – ADyson
Я хочу избежать сетевой поездки. – Mairaj
сообщают, что сетевая поездка генерируется каждый раз, когда пользователь набирает _anything_, где имеется более 3 символов, и вероятность того, что пользователь на самом деле набрал 3 пустых пространства (они вряд ли будут думать, что он вернет что-нибудь!), Вы может принести много усилий и снизить сетевой трафик на 0,0001%. Просто сказать, что это кажется немного бессмысленным. Но если вы действительно этого захотите, вы можете создать настраиваемую функцию для атрибута 'source' и не допустить, чтобы запрос продвигался вперед в этой точке на основе условий поиска (и просто возвращал пустой массив). Документы typeahead показывают подпись метода – ADyson