ユーザー入力を受け取り、一致する結果を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」イベントが呼び出されないようにすることだと思いました。問題は、それを行う方法がわからない、またはそれが良いアイデアであるかどうかわからないことです。
提案/ヘルプは大歓迎です。