是否可能/如何像谷歌插件一样为jQuery自动完成设置延迟
Is it possible / How to set a delay for jQuery Autocomplete like Google plugin?
我像谷歌一样使用jQuery插件Autocomplete,它运行得很好。但是AJAX请求是在每次按键时触发的。也就是说,字符串washington
将引起十(!)个请求。使用选项minLength
可以减少请求的数量。但例如,对于minLength:3
,我们仍然发送七个请求(从第四个字符开始)。
$(function() {
$("#bar").autocomplete({
minLength: 3,
limit: 5,
source : [
function(query, add) {
fooNumber = $('#foo-number').val();
$.getJSON("/my/ajax/controller/bar?data[number]=" + query + "&data[foo_name]=" + fooNumber, function(response) {
add(response);
})
}],
});
});
当用户从300 ms
开始就没有输入时,如何防止即时请求服务器并使脚本只发送新的请求
这可能很有用。(未测试)
//global variable
var keyPressed = new Date();
// Call where you're watching for pressed keys.
var updateKeyPressed = function(){
keyPressed = new Date();
}
$(function() {
$("#bar").autocomplete({
minLength: 3,
limit: 5,
appendMethod:'replace',
closeOnBlur: true,
source : [
function(query, add) {
var currentDate = new Date();
setInterval(function(){
currentDate = new Date();
if (currentDate.getTime() > keyPressed.getTime()) {
orderApplicationNumber = $('#foo-number').val();
$.getJSON("/my/ajax/controller/bar?data[number]=" + query + "&data[foo_name]=" + fooNumber, function(response) {
add(response);
});
}
}, 300);
}
],
});
});
对不起,我理解错了。你可以用标志做一些逻辑,并用源代码中的函数设置时间,比如(还没有测试它):
var定时器;
$("#bar").autocomplete({
minLength: 3,
limit: 5,
cacheLength: 1,
source : [
function(query, add) {
clearTimeout(timer);
timer = setTimeout(function(){
fooNumber = $('#foo-number').val();
$.getJSON("/my/ajax/controller/bar?data[number]=" + query + "&data[foo_name]=" + fooNumber, function(response) {
add(response);
})
}, 300)
}],
});
或者你可以切换到jquery ui>
原始答案:
jquery ui自动完成有一个内置参数,延迟(DOCS)
来自文档:
$( ".selector" ).autocomplete({
delay: 500
});
相关文章:
- 我如何创建一个选择器,就像jQuery有jQuery()或$()一样
- jQuery的工作方式不一样
- 使用条件函数的Jquery ReplaceWith()的行为与我预期的不一样
- 如何使用CSS或JQuery使整个网页看起来更小(就像Chrome的缩小功能一样)
- 扩展jQuery以使占位符像我创建的一样
- jQuery.pr()返回undefined,而.attr()对数据-*的作用与预期一样
- 格式化jQuery Autocomplete以像下拉菜单一样扩展浏览器/窗口边缘
- Javascript/jQuery像浏览器一样验证电子邮件
- 是否有任何方法可以像处理jQuery中附加到XHR延迟对象的done方法处理程序一样处理websocket onmess
- 在 PHP 中使用每个,就像 jquery 一样
- 如何像jquery一样自动调用Javascript中的函数
- Javascript 像 jquery 一样显示/隐藏
- 如何使其像jquery一样
- 是否可以像jQuery一样通过id选择元素?
- 如何实现像jQuery一样的链式方法调用
- 是Zepto.js只用于移动web应用程序,还是它可以像jQuery一样用于桌面?
- 如何像JQuery一样定义函数
- 像JQuery一样把整个代码放在一起
- 像jQuery一样使用prevAll的JavaScript
- JavaScript像jQuery一样调用变量作为对象和函数