前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >vue 监听input停止输入后发送请求

vue 监听input停止输入后发送请求

作者头像
kirin
发布2020-11-03 15:07:12
3.4K0
发布2020-11-03 15:07:12
举报
文章被收录于专栏:Kirin博客Kirin博客

我们要实现用户停止输入才去请求AJAX的一个功能


在网上看了很多文章, 觉得写得都不是特别好

  1. 基本上都是用库loadsh, 不讲原理思路, 只贴如何用工具实现代码
  2. 看到一个写得非常好的思路,我照着这个思路实现了下这个功能
  3. 利用定时器,让函数执行延迟500毫秒,在500毫秒内如果有函数又被调用则删除上一次调用,这次调用500毫秒后执行,如此往复。就是当你停止输入500毫秒后才会执行函数

来看看用vue实现这样的一个功能, 贴代码

data(){

return{

lastTime:0,

}

}

代码语言:javascript
复制
keyword(newVal){
        if(this.lastTime == 0){ 
          this.lastTime = setTimeout(()=>{
            // AJAX(newVal)
          },2000)
        }else{
          clearTimeout(this.lastTime)
          this.lastTime = setTimeout(()=>{
            // AJAX(newVal)
          },2000)
        }
}
  1. watch先监听一下input的值
  2. 我们第一次输入, watch的函数开始调用, this.lastTime初始值我设置为0, 故执行if内语句
  3. if语句内新建一个setTimeout, 且其返回值(这个值是num, 自己console一下)赋值给this.lastTime
  4. 用户开始持续输出时 => watch函数再一次被调用 => 因为this.lastTime不等于0了, 开始进入else语句
  5. else语句清除上一次的延迟函数, 再新建一个延迟函数
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-10-30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 我们要实现用户停止输入才去请求AJAX的一个功能
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档