Tôi đã làm việc với typeahead.js
và tải dữ liệu bằng cách sử dụng tùy chọn BloodHound remote
.Ngăn chặn cuộc gọi ajax trên không gian trống typeahead.js
Mọi thứ đều hoạt động như dự kiến ngoại trừ khi tôi nhập only spaces
vào textbox
typeahead still sends ajax call
.
Tôi muốn biết nếu có cách nào để prevent ajax call
nếu có only spaces
trong hộp văn bản. Tôi đang tìm kiếm hành vi tương tự như trim
.
Đây là mã của tôi. Tôi đã cố gắng sử dụng chức năng prepare
nhưng không có may mắn.
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>'
},
});
tại sao lại xảy ra sự cố khi gửi cuộc gọi khi có khoảng trắng? Có lẽ người dùng sẽ không nhận được kết quả nào. – ADyson
Tôi muốn tránh chuyến đi mạng. – Mairaj
cho rằng một chuyến đi mạng được tạo ra mỗi lần người dùng gõ _anything_ nơi có nhiều hơn 3 ký tự và cơ hội người dùng thực sự nhập 3 khoảng trống (họ không có khả năng nghĩ rằng nó sẽ trả về bất kỳ thứ gì!), Bạn có thể đi rất nhiều nỗ lực và giảm lưu lượng truy cập mạng của bạn xuống 0,0001%. Chỉ cần nói nó có vẻ hơi vô nghĩa. Nhưng nếu bạn thực sự muốn, bạn có thể tạo một hàm tùy chỉnh cho thuộc tính 'source' và ngăn yêu cầu đi trước tại điểm đó dựa trên các cụm từ tìm kiếm (và chỉ trả lại một mảng trống). Các tài liệu về typeahead hiển thị chữ ký phương thức – ADyson