最近写了个自动补全,代码比较简单,主要是用到绑定了keyup事件然后去通过ajax请求去后台查询数据。但是查看日志发现,后台触发了很多没必要的请求。因为keyup调用次数太频繁了,所以想到在前台就过滤掉部分输入中的字符。
代码如下:
<script>$(function() {
$("#autotext").keyup(function() {
var a = $(this).val();
setTimeout(function() {
find(a);
}, 300);
});
function find(c) {
if(c != $("#autotext").val()) {
return;
}
//后台请求
}
});</script>
思路:通过延迟加载的方式,每次在调用时候都判断,此次的值是否等于当前输入框的值,如果,你在3毫秒(根据用户体验此块可以吊证)内,输入了 ade, 他就会自动过滤掉ad的情况。