Pracowałem z typeahead.js
i ładowałem dane za pomocą opcji BloodHound remote
.Zapobieganie wywołaniom ajaxów na pustych polach typeahead.js
Wszystko działa zgodnie z oczekiwaniami, z tą różnicą, że po wprowadzeniu only spaces
w stanie textbox
nadal wpisuje się sends ajax call
.
Chcę wiedzieć, czy istnieje sposób na prevent ajax call
, jeśli w polu tekstowym jest only spaces
. Szukam podobnych zachowań, takich jak trim
.
Oto mój kod. Próbowałem użyć funkcji prepare
, ale bez powodzenia.
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>'
},
});
Dlaczego wysyłanie połączenia jest problematyczne, gdy dostępne są spacje? Prawdopodobnie użytkownik nie otrzyma żadnych wyników. – ADyson
Chcę uniknąć podróży w sieci. – Mairaj
dają, że wyzwolenie sieci jest generowane za każdym razem, gdy użytkownik wpisze _any_kwój_ tam, gdzie jest więcej niż 3 znaki, oraz szanse na to, że użytkownik wpisze 3 puste miejsca (prawdopodobnie nie będą one zwracać niczego!), może podjąć wiele wysiłku i zmniejszyć ruch w sieci o 0,0001%. Powiedzenie, że to trochę bez sensu. Ale jeśli naprawdę chcesz, możesz utworzyć niestandardową funkcję dla atrybutu 'source' i uniemożliwić żądanie kontynuacji w tym punkcie na podstawie wyszukiwanych terminów (i po prostu zwrócić pustą tablicę). Dokumenty nagłówkowe pokazują podpis metody – ADyson