由于环境的原因,我想把它限制在一个小而简洁的东西上,而不是一个插件,除非它是一个可以内联放在其他jquery代码旁边的扩展。
我有这个代码:
$("#txtSearch").live('keyup', function () {
LoadList(1)
});
我想添加一个延迟,这样如果用户必须等待0.5秒(如停止键入)才能执行调用。
因此,基本上,如果连续按键之间的时间少于X,则不会发生ajax调用
有没有一种简洁的方法可以用Jquery做到这一点?
设置超时,并在每次按键时清除它,然后再应用新的超时:
var timeout;
$("body").on('keyup', '#txtSearch', function () {
window.clearTimeout(timeout);
timeout = window.setTimeout(function(){
LoadList(1);
},500);
});
示例:http://jsfiddle.net/niklasvh/KgRjJ/
$("#txtSearch").live('keyup', function () {
var value=$("#txtSearch").val();
setTimeout(function(){
if ($("#txtSearch").val() == value)
{
LoadList(1)
}
},500);
});
您可以在jQueryUI中使用自动完成小部件,它有一个延迟选项:
"自动完成"在击键后等待激活自身的延迟(以毫秒为单位)。零延迟对本地数据来说是有意义的(响应性更强),但对远程数据来说会产生大量负载,而响应性较差。
http://jqueryui.com/demos/autocomplete