input 输入事件防抖

前言

    input输入进行查询,不想输入一个拼音就触发事件,这样会频繁的触发,需要通过输入中文完成后再进行搜索

解决方法 — jquery

var cpLock = true;
$('#search-input').on('compositionstart', function () {
    cpLock = false;
  });
  $('#search-input').on('compositionend', function () {
    cpLock = true;
  });
  $("#search-input").on("input", function (e) {
    e.preventDefault();
    var _this = this;
    setTimeout(function () {
      if (cpLock) {
        //开始写逻辑
        searchValue = $("#search-input").val().trim('');
        if (searchValue === '') {
          $(".search-result").html('')
        } else {
          search(searchValue)
        }
      }
    }, 0)
  })

解决方法 — vue

<div class="input-warp">
  <input type="text" v-model="searchValue" />
  <div @click="search"></div>
</div>
export default {
	data () {
		return {
			searchValue: '',
			searchArr: []
		}
	}
  	watch: {
		searchValue: {
	      	handler() {
		        if (this.timer) {
		          clearTimeout(this.timer)
		        }
		        this.timer = setTimeout(() => {
		          this.search();
		        }, 200)
		      },
		    deep: true
	    }
	}
  	methods: {
		search () {
	      this.isSearch = true;
	      this.searchValue = this.searchValue.trim('');
	      if (this.searchValue !== '') {
	        this.searchList();
	      } else {
	        this.searchArr = [];
	      }
	    },
	    searchList () {
	      axios({
	        url: ``
	      }).then(({ data }) => {
	        this.searchArr = [];
	        if (this.searchValue === '' || !data.content || !data.content.features.features) {
	          this.searchArr = [];
	          return
	        }
	        // 查询结果
	        this.searchArr = data.content.features.features;
	    }
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值