【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
【vue】vue +element 搭建项目,实现实时输入效果时停止输入后发送请求的更多相关文章
- Vue + TypeScript + Element 搭建简洁时尚的博客网站及踩坑记
		
前言 本文讲解如何在 Vue 项目中使用 TypeScript 来搭建并开发项目,并在此过程中踩过的坑 . TypeScript 具有类型系统,且是 JavaScript 的超集,TypeScript ...
 - 使用VUE CLI3.0搭建项目vue2+scss+element简易版
		
1.安装Vue CLI 3 //三选一即可cnpm install -g @vue/cli npm install -g @vue/cli yarn global add @vue/cli 注意: 1 ...
 - vue.js + element 搭建后台管理系统 笔记(一)
		
此文仅记录本人在搭建后台系统过程中遇到的难点及注意点,如果能帮到各位自然是极好的~~~ 项目主要架构:vueJS.elementUI.scss 一.项目初始化 首先需要安装nodejs,安装方法就不在 ...
 - vue教程3-webpack搭建项目
		
vue-cli https://cli.vuejs.org/zh/ vue-cli是vue的命令行工具,对于创建项目,安装各种组件,运行项目都极为方便,是在开发vue中的必备工具 vue-cli基于n ...
 - 【vue】vue +element 搭建项目,mock模拟数据(纯干货)
		
1.安装mockjs依赖 (c)npm install mockjs --save-dev 2.安装axios(Ajax) (c)npm install --save axios 3.项目目录 4.设 ...
 - 【vue】vue +element 搭建项目,将js函数变成vue的函数
		
demo:时间转换 1.目录 <1>在src文件夹下新建文件夹prototypefns--------在此文件夹创建util.js, <2>在prototypefns下新建文件 ...
 - 【vue】vue +element 搭建项目,vuex中的store使用
		
概述: 每一个 Vuex 应用的核心就是 store(仓库).“store”基本上就是一个容器,它包含着你的应用中大部分的状态 (state).Vuex 和单纯的全局对象有以下两点不同: Vuex 的 ...
 - 【vue】vue +element 搭建项目,vue-cli 如何打包上线
		
以自己的项目为例 第一步:手动修改config文件夹中的index.js文件中的build对象,将 assetsPublicPath 中的 “/” ,改为 “你实际的加载路径” 如图: 第二步:执行( ...
 - 【vue】vue +element 搭建项目,要求既支持pc端又支持移动端
		
使用场景:有适配pc端改为适配pc端和移动端,使用2套css 代码实现App.vue created: function () { if(document.documentElement.client ...
 
随机推荐
- Excel通用类工具(二)
			
前言 上一篇中写到了用反射来处理类中的不用的属性,但是Excel的列名还得手动输入,这样还是比较麻烦的,今天这篇就利用自定义注解来解决手动传入列名的问题:其实很简单的,只需要在上一篇的基础上加一个类就 ...
 - python名片管理
			
python名片管理是我根据视频自己敲敲的代码,后续学习会持续更新 代码 card_main.py import card_tools # 无限循环,由用户决定什么时候退出 while True: # ...
 - CSS制作镂空字体
			
1.效果图 2.html内容: <!doctype html><html lang="en"><head> <meta charset=& ...
 - 包含min函数的栈 ,二叉树的镜像
			
包含min函数的栈 问题 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)). 代码 # -*- coding:utf-8 -*- class Sol ...
 - Jmeter自带录制功能
			
版本更新迭代较快的情况下,通过自动化进行冒烟测试以判断版本准入,在无接口文档的情况下,如果进行自动化?Jmeter有一个自带的录制功能,可以通过录制,获取各个接口设计情况,下面介绍如何进行使用 1.打 ...
 - 微信小程序 刷新当前页面
			
刷新当前页面 Measure 法一: 需要的地方 this.onLoad(),试过之后,无用!!! 法二:亲测有效 在this.onReady()中进行获取数据操作(这样一来,就既可以在初次显示时直接 ...
 - ChakraCore/JSRT使用问题汇总
			
QQ交流群:523723780(ChakraCore) ChakraCore是什么? 一个微软开源的,用于Windows IE/Edge内核的高效JS脚本引擎. 前不久微软开源了ChakraCore, ...
 - MySQL 安装及卸载详细教程
			
本文采用最新版MySQL8版本作为安装教程演示,本人亲试过程,准确无误.可供读者参考. 下载 官网下载 --> 社区免费服务版下载. 下载Windows安装程序MySQL Installer M ...
 - Spark集群搭建【Spark+Hadoop+Scala+Zookeeper】
			
1.安装Linux 需要:3台CentOS7虚拟机 IP:192.168.245.130,192.168.245.131,192.168.245.132(类似,尽量保持连续,方便记忆) 注意: 3台虚 ...
 - 无公网IP的阿里云ESC服务器如何访问外部网络
			
新购买了3台阿里云ECS服务器(centos7)和弹性公网IP(EIP),虽然是从事计算机行业的人员但俺不是计算机网络从业人员