james_027 wrote:
hi,
I have a small jQuery script, that get some data over the server on
every keypress by the user, but I don't to perform such action every
time when the user presses a key, specially if between key presses
happens in short amount of time. How do I delay this event?
Here is my script
$('[EMAIL PROTECTED]').keyup(function(e){
if (e.target.value != ''){
$.get('/main/search_item/',
{search_item:e.target.value},
function(data){
$('[EMAIL
PROTECTED]').html(data);
}
);
}
});
thanks
james
var delayed;
$('[EMAIL PROTECTED]').keyup(function() {
clearTimeout(delayed);
var value = this.value;
if (value) {
delayed = setTimeout(function() {
$.get('/main/search_item/', { search_item: value },
function(data) {
$('#search_item_result]').html(data);
});
}, 400);
}
});
I've optimized a few things as well, like using the faster #id selector
and using "this" instead of e.target...
--Klaus