希望这对某个人来说是一个快速简单的问题。我相当新于使用大量的javascript/jquery,我有以下设置从数据库中提取客户名称,并在用户完成输入客户ID后显示它。
所有工作都很好, 但它在每一个按键按下时搜索。我知道我可以把它改成模糊焦点, 但我希望它能随着输入动态搜索,进行延迟。
这是当前的代码:
如您所见,它绑定到每个keyup事件,这意味着如果您搜索得太快,可能会导致错误的结果,因为它仍在加载中(即如果未找到匹配项,则显示错误,并且快速输入会使用户需要回退并重新输入最后一个数字)。
有人可以帮助添加延迟到现有代码中,并尽可能解释一下您所做的更改,我不想只是复制和粘贴而不理解。
---- 编辑 ----
这是我完成的代码,谢谢大家!
所有工作都很好, 但它在每一个按键按下时搜索。我知道我可以把它改成模糊焦点, 但我希望它能随着输入动态搜索,进行延迟。
这是当前的代码:
function postData(){
var id = $('#id').val();
$.post('inc/repairs/events-backend.php',{id:id},
function(data){
$("#display_customer").html(data);
});
return false;
}
$(function() {
$("#id").bind('keyup',function() {postData()});
});
如您所见,它绑定到每个keyup事件,这意味着如果您搜索得太快,可能会导致错误的结果,因为它仍在加载中(即如果未找到匹配项,则显示错误,并且快速输入会使用户需要回退并重新输入最后一个数字)。
有人可以帮助添加延迟到现有代码中,并尽可能解释一下您所做的更改,我不想只是复制和粘贴而不理解。
---- 编辑 ----
这是我完成的代码,谢谢大家!
function postData(){
var id = $('#id').val();
$.post('inc/repairs/events-backend.php',{id:id},
function(data){
$("#display_customer").html(data);
});
return false;
}
$(function() {
var timer;
$("#id").bind('keyup input',function() {
timer && clearTimeout(timer);
timer = setTimeout(postData, 300);
});
});