最近重构了公司一.NET开发的项目,里面看到运用自动补全功能,直接上代码:
<input name="address" type="text" id="map_address_searchtxt" maxlength="20" οnkeyup="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毫秒,自己设);