js实现搜索框的节流与防抖
2019-05-21 11:21
357 查看
js处理搜索框,节流与防抖
在输入框输入时,要搜索某个字符串,基于性能考虑,肯定不能用户没输入一个字符就发送一次搜索请求,一种方法就是等待用户停止输入,比如过了500ms用户都没有再输入,那么就搜索此时的字符串,这就是防抖;节流比防抖宽松一些,比如我们希望给用户一些搜索提示,所以在用户输入过程中,没过500ms就查询一次相关字符串,这就是节流。
节流
防抖的实现思路:每次触发事件时都取消之前的延时调用方法:
var timer = null function input1 () { clearTimeout(timer) timer = setTimeout(function () { // ajax() console.log(document.getElementById('input1').value) }, 500) }
防抖
节流的实现思路:每次触发事件时都判断当前是否有等待执行的延时函数:
var flg = false function input2 () { if (flg) { return false } flg = true setTimeout(function () { // ajax() console.log(document.getElementById('input2').value) flg = false }, 500) }
以下是完整示例代码:
<!DOCTYPE html> <html lang="en" dir="ltr"> <head> <meta charset="utf-8"> <title></title> </head> <body> <div class=""> 抖动示例:<input id='input1' type="text" name="" value="" onkeydown="input1()"> </div> <div class=""> 节流示例:<input id='input2' type="text" name="" value="" onkeydown="input2()"> </div> </body> <script> // 节流 var timer = null function input1 () { clearTimeout(timer) timer = setTimeout(function () { // ajax() console.log(document.getElementById('input1').value) }, 500) }// 防抖 var flg = false function input2 () { if (flg) { return false } flg = true setTimeout(function () { // ajax() console.log(document.getElementById('input2').value) flg = false }, 500) }</script> </html>
相关文章推荐
- js函数防抖、节流实现
- JS实现京东首页之页面顶部、Logo和搜索框功能
- 实现图片首尾平滑轮播(JS原生方法―节流)
- 节流和防抖的实现
- js实现YouKu的漂亮搜索框效果
- JS 实现可伸缩搜索框
- JS+Ajax实现百度智能搜索框
- 搜索框的实现JS
- js中连续触发事件的稀释方法(函数节流、函数防抖、标识变量)
- 搜索框的实现JS
- js 防抖和节流
- C#.Net下的防抖-Debounce和节流阀-Throttle功能实现
- angularjs material 实现搜索框
- js实现带有搜索框的可多选的动态下拉列表
- 搜索框的js实现
- JS实现搜索框动态效果
- js函数节流和防抖
- JS节流和防抖
- js实现搜索框提示字的特效------------获取焦点和失去焦点
- 搜索框根据输入自动提示--js实现