How to use setTimeout / .delay() to wait for typing between characters

Posted by Darcy on Stack Overflow See other posts from Stack Overflow or by Darcy
Published on 2010-05-26T13:43:37Z Indexed on 2010/05/26 13:51 UTC
Read the original article Hit count: 272

Filed under:
|
|
|
|

Hi all,

I am creating a simple listbox filter that takes the user input and returns the matching results in a listbox via javascript/jquery (roughly 5000+ items in listbox). Here is the code snippet:

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));
    }
}
});

This works pretty well, but slows down somewhat when the 1st/2nd char's are being typed since there are so many items.

I thought a solution I could use would be to add a delay to the textbox that prevents the 'keyup' event from being called until the user stops typing. The problem is, I'm not sure how to do that, or if its even a good idea or not.

Any suggestions/help is greatly appreciated.

© Stack Overflow or respective owner

Related posts about JavaScript

Related posts about jQuery