我想限制一下我写的以下ajax实时搜索功能。
我这样做是为了只有在输入至少2个字符的情况下才发送请求。我还想在四分之一秒内限制ajax,让用户有机会输入他们想要的内容。我将ajax包装在一个setTimeout函数中,但这不起作用。
$('#search').keyup(function() {
var string = $(this).val();
if (string.length >= 2) {
$.ajax({
'type': 'GET',
dataType: 'html',
'url': url,
'success': function(data){
// show the search data
}
});
} else if (string.length <= 1) {
// restore page content as of when it was loaded
}
});我应该问的另一件事是,我可能应该缓存ajax的结果,不是吗?
发布于 2011-08-06 11:20:59
只有if (string.length >= 2)中的代码:
var elem = $(this);
// save newest search
elem.data('search',search)
// clear pending searches
.clearQueue().stop()
// waits
.delay(250)
// runs search
.queue(function() {
$.ajax({
'type': 'GET',
dataType: 'html',
'url': url,
'success': function(data){
// check if can be run
if(elem.data('search') != search)
return;
// show the search data
}
});
});发布于 2011-08-06 11:17:07
看看(或者考虑使用) Jquery Autocomplete的源代码,它做的几乎就是你想要的,它只在暂停后提交数据,以确保用户完成了,并且它有一个缓存,以及其他特性。
https://stackoverflow.com/questions/6964501
复制相似问题