I'm using the following code (written by another user) to throttle ajax requests in a livesearch function:
JSFiddle if you prefer a demo: http://jsfiddle.net/4xLVp/
It seems buggy, though. Clearing values with Ctrl+shift+back-arrow
, and typing again causes a flurry of requests. Blank values also cause a request. It dones't seem right, especially compared to jQuery UI autocomplete, where request delays seem more measured.
$('##tag-search').keyup(function() {
var elem = $(this);
if (elem.val().length >= 2) {
elem.data('search',search).clearQueue().stop().delay(1000).queue(function() {
$.ajax({ // ajax stuff
'success': function(data){ /*show result*/ }
});
if (elem.data('search') != string) return;
});
} else if (string.length <= 1) { /*show original content*/ }
});
Is there a better way to handle this?