我正在创建一个简单的列表框过滤器,它接受用户输入并通过 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));
}
}
});
这工作得很好,但是当输入第一个/第二个字符时速度会有所降低,因为项目太多了。
我认为我可以使用的解决方案是向文本框添加延迟,以防止在用户停止键入之前调用“keyup”事件。问题是,我不知道该怎么做,或者它是否是一个好主意。
非常感谢任何建议/帮助。