Я создаю простой фильтр списка, который принимает пользовательский ввод и возвращает результаты сопоставления в списке через javascript / jquery (примерно 5000+ элементов в списке). Вот фрагмент кода:
var Listbox1 = $('#Listbox1');
var commands = document.getElementById('DatabaseCommandsHidden'); //using js for speed
$('#CommandsFilter').bind('keyup', function() {
Listbox1.children().remove();
for (var i = 0; i < commands.options.length; i++) {
if (commands.options[i].text.toLowerCase().match($(this).val().toLowerCase())) {
Listbox1.append($('<option></option>').val(i).html(commands.options[i].text));
}
}
});
Это работает довольно хорошо, но несколько замедляется, когда набираются 1-й / 2-й символы, так как элементов очень много.
Я подумал, что решение, которое я мог бы использовать, это добавить задержку в текстовое поле, которая предотвращает вызов события keyup до тех пор, пока пользователь не перестанет печатать. Проблема в том, что я не уверен, как это сделать, или даже если это хорошая идея или нет.
Любые предложения / помощь с благодарностью.