最近重构了公司一.NET开发的项目,里面看到运用自动补全功能,直接上代码:
1 | <input name= "address" type= "text" id= "map_address_searchtxt" maxlength= "20" onkeyup= "searchKeyUp();" class = "input2 fl" placeholder= "请输入小区、大厦等地址关键字" autocomplete= "off" > |
原作者意图是在文本框没输完一次就执行一次后端查询,但是实际中比如输入小, 拼音 xiao 那么就会执行4次查询,用户体验非常卡,因为发送的频率太高了,直接上优化代码:
1 var timers = null; 2 function searchKeyUp(){ 3 clearTimeout(timers); 4 timers = setTimeout(function(){ 5 searchKey(); 6 },350); 7 }
思路为:每次输入完判断timer是否存在,存在即清掉上一次执行动作,这样就会保持一定的延时(350毫秒,自己设);
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步