防抖案例实战之仿百度搜索框即时搜索

百度搜索框交互体验是当用户输入完成后一定时间后才发起搜索请求,所以我们设计的input回调应该包含一个定时器,当在规定时间内没有input才能执行处理逻辑(专业术语叫做防抖),规定时间内触发input事件就重置定时器。见下例:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title></title>
    <link rel="stylesheet" href="">
</head>
<body>
    <input type="text" name="" id="input">
    <script src="http://code.jquery.com/jquery-2.1.1.min.js"></script>
    <script type="text/javascript">
        let debounce = (func, wait=500) => {//利用防抖实现
            let timer = null;
            return function(...args) {
                if(timer) clearTimeout(timer)
                timer = setTimeout( () => {
                    func.apply(this,...args)
                },wait)
            }
        }
        $('input[type=text]').on('input',debounce(function(){
            console.log(this.value)
            let value = this.value;
            //$.ajax({})发送请求
        },700))
    </script>
</body>
</html>

 

posted @ 2019-02-14 11:35  卑面派对  阅读(1182)  评论(1编辑  收藏  举报