• 【vue】vue +element 搭建项目,实现实时输入效果时停止输入后发送请求


    1.实现的效果

      输入关键字后,根据输入的关键字实时显示搜索的结果,按回车键时也进行搜索

    2.原理:

    • 通过时间戳+定时器+一个全局变量实现。代码量很少比较易懂。
    • 用户输入时触发keyup事件,并调用事件函数。事件函数被调用后会生成对应的event.timeStamp,这个值在事件函数体内一直不会变。

    • 将event.timeStamp赋给全局中定义的this.lastTimeStamp。这个this.astTimeStamp是一个全局的变量,这样这个值在每次事件触发时都会被改变。

    • 如果在1s内,this.lastTimeStamp这个值被事件函数重新赋值修改,则this.lastTimeStamp != event.timeStamp;说明还在输入。不走ajax请求。

    • 若1s后不再触发事件,不再调用事件函数。this.lastTimeStamp被本次事件函数赋值一次后,没有再被改写。则说明,此时不再输入或有间歇。this.lastTimeStamp==event.timeStamp。发送ajax请求。

    3.html

    <el-input placeholder="请输入内容"  class="input-with-select marign-sm-b" clearable v-model="searchKey"  @keyup.native="onkeyup($event)" @keyup.enter.native="onenter">
      <el-button slot="append" icon="el-icon-search" @click.native="onenter"></el-button>
    </el-input>

    4.js

     export default {
            data() {
                return {
                    searchKey: '',//搜索关键字
                    lastTimeStamp: 0,//标记当前事件函数的时间戳
                }
            },
            created(){
            },
            methods: {
                /**
                 * des:搜索的回车事件
                 */
                onenter(){
                    console.log('发送请求!!!');
                },
    
                /**
                 * des:用户在输入状态下不发送请求,等停止输入后发送请求
                 */
                onkeyup(event){
                    if(event.keyCode != 13){//除回车键外
                        //标记当前事件函数的时间戳
                        this.lastTimeStamp = event.timeStamp;
                        setTimeout(() => {
                            //1s后比较二者是否还相同(因为只要还有事件触发,lastTimeStamp就会被改写,不再是当前事件函数的时间戳)
                            if(this.lastTimeStamp == event.timeStamp){
                                console.log('发送请求');
                            }
                        }, 1000);
                    }
    
                },
            },
        }

    参考链接:

    个人资料:

    作者:smile.轉角

    QQ:493177502

  • 相关阅读:
    HDU 1982 Kaitou Kid The Phantom Thief (1)
    HDU 1984 Mispelling4
    HDU 2546 饭卡
    HDU 1009 FatMouse' Trade
    在VC 中如何隐藏一个主程序窗口
    .菜单项
    SetClassLong,GetClassLong 动态改变光标
    .窗口捕获鼠标
    .主窗口向子控件发送消息
    线段树 1698 Just a Hook 区间set更新
  • 原文地址:https://www.cnblogs.com/websmile/p/9112165.html
Copyright © 2020-2023  润新知