希望这对某人来说是一个快速而简单的方法。我对使用大量 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);
});
});