BloodHound remote
seçeneğini kullanarak typeahead.js
ile çalışıyor ve verileri yüklüyorum.Boş alanlarda ajax çağrısını engelleyin typeahead.js
textbox
yazım denetiminde hala sends ajax call
yazarken her şey beklendiği gibi çalışıyor.
Metin kutusunda only spaces
varsa, prevent ajax call
yolunun olup olmadığını bilmek istiyorum. trim
gibi benzer davranışları arıyorum.
İşte kodum. prepare
işlevini kullanmayı denedim, ancak şanssız.
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>'
},
});
Neden boşluk olduğunda çağrı göndermek bir sorun? Muhtemelen kullanıcı hiçbir sonuç almayacaktır. – ADyson
Ağ yolculuğundan kaçınmak istiyorum. – Mairaj
, kullanıcının 3'ten fazla karakter içeren _anything_ türlerini yazdığı her seferinde bir ağ gezisinin üretildiğini ve bir kullanıcının gerçekten 3 boş alan yazması olasılığını (bir şeyin herhangi bir şey döndüreceğini düşünmezler) verdiğini belirtir. Çok fazla çaba harcayabilir ve ağ trafiğinizi% 0.0001 azaltabilir. Sadece biraz anlamsız görünüyor. Ancak, gerçekten istiyorsanız, 'source' özniteliği için özel bir işlev oluşturabilir ve isteğin arama terimlerine göre bu noktada ilerlemesini engelleyebilir (ve boş bir diziyi döndürebilirsiniz). Typeahead dokümanlar, yöntem imzasını gösterir – ADyson