Вы можете использовать способности данных jQuery для этого, что-то вроде этого:
$('#mySearch').keyup(function() {
clearTimeout($.data(this, 'timer'));
var wait = setTimeout(search, 500);
$(this).data('timer', wait);
});
function search() {
$.post("stuff.php", {nStr: "" + $('#mySearch').val() + ""}, function(data){
if(data.length > 0) {
$('#suggestions').show();
$('#autoSuggestionsList').html(data);
}else{
$('#suggestions').hide();
}
});
}
Основным преимуществом здесь является отсутствие глобальных переменных повсюду, и вы можете обернуть это в анонимную функцию в setTimeout, если хотите, просто пытаясь сделать пример максимально чистым.