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 搭建项目,实现实时输入效果时停止输入后发送请求的更多相关文章

  1. Vue + TypeScript + Element 搭建简洁时尚的博客网站及踩坑记

    前言 本文讲解如何在 Vue 项目中使用 TypeScript 来搭建并开发项目,并在此过程中踩过的坑 . TypeScript 具有类型系统,且是 JavaScript 的超集,TypeScript ...

  2. 使用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 ...

  3. vue.js + element 搭建后台管理系统 笔记(一)

    此文仅记录本人在搭建后台系统过程中遇到的难点及注意点,如果能帮到各位自然是极好的~~~ 项目主要架构:vueJS.elementUI.scss 一.项目初始化 首先需要安装nodejs,安装方法就不在 ...

  4. vue教程3-webpack搭建项目

    vue-cli https://cli.vuejs.org/zh/ vue-cli是vue的命令行工具,对于创建项目,安装各种组件,运行项目都极为方便,是在开发vue中的必备工具 vue-cli基于n ...

  5. 【vue】vue +element 搭建项目,mock模拟数据(纯干货)

    1.安装mockjs依赖 (c)npm install mockjs --save-dev 2.安装axios(Ajax) (c)npm install --save axios 3.项目目录 4.设 ...

  6. 【vue】vue +element 搭建项目,将js函数变成vue的函数

    demo:时间转换 1.目录 <1>在src文件夹下新建文件夹prototypefns--------在此文件夹创建util.js, <2>在prototypefns下新建文件 ...

  7. 【vue】vue +element 搭建项目,vuex中的store使用

    概述: 每一个 Vuex 应用的核心就是 store(仓库).“store”基本上就是一个容器,它包含着你的应用中大部分的状态 (state).Vuex 和单纯的全局对象有以下两点不同: Vuex 的 ...

  8. 【vue】vue +element 搭建项目,vue-cli 如何打包上线

    以自己的项目为例 第一步:手动修改config文件夹中的index.js文件中的build对象,将 assetsPublicPath 中的 “/” ,改为 “你实际的加载路径” 如图: 第二步:执行( ...

  9. 【vue】vue +element 搭建项目,要求既支持pc端又支持移动端

    使用场景:有适配pc端改为适配pc端和移动端,使用2套css 代码实现App.vue created: function () { if(document.documentElement.client ...

随机推荐

  1. kafka指定partition的分区规则

    博客地址:https://www.cnblogs.com/gnivor/p/5318319.html

  2. Debug始于71年前

    摘要: 纪念Grace Hopper发现世界上第一个计算机BUG! 1947年9月9日,Grace Hopper的计算科学团队在哈佛的哈弗Mark II电脑运行程序时遇到一个技术故障.她在发生故障的M ...

  3. memcache 相关

    1.查看memcache是否启动 ps -ef | grep mem

  4. Laravel 系列入门教程(二)【最适合中国人的 Laravel 教程】

    本篇文章中,我将跟大家一起体验 Laravel 框架最重要的部分——路由系统. 如果你读过 2015 版的教程,你会发现那篇文章里大书特书的 Auth 系统构建已经被 Laravel 捎带手给解决了. ...

  5. 配置安全域名https申请免费证书并配置nginx运行环境

    补全信息时选项 在这一步需要去查看进度,下载对应文件上传到对应站点根目录里按照要求建的隐藏类型的文件 如下图 讲证书文件按照下面操作 进行配置项配置https 如下 详情下载附件 server { l ...

  6. 前端了解即可:OSS客户端如何使用,以实现资源分离

    前一阵,应为项目需要,才简单整理了一下oss客户端的使用,做静态资源分离,及在项目中引入路径.接下来讲解记录一下,阿里云对象存储(Object Storage Service,简称OSS)客户端的基础 ...

  7. Ambari架构源码解析

    1. Ambari介绍 Apache Ambari是一种基于Web的工具,支持Apache Hadoop集群的供应.管理和监控.Ambari已支持大多数Hadoop组件,包括HDFS.MapReduc ...

  8. Linux扩展分区记录

    Vmware中新建的Linux虚拟机,数据盘规划太小,数据量超出磁盘大小,本文介绍如何快速扩充空间 参考:https://blog.csdn.net/lyd135364/article/details ...

  9. Elasticsearch alias别名管理小结

    Elasticsearch alias别名管理小结 By:授客 QQ:1033553122 建创测试数据 1 创建别名 2 移除别名 3 创建测试数据 4 批量操作 5 例1. 5 例2. 把多个索引 ...

  10. DES数据解密

    /// <summary> /// DES数据解密 /// </summary> /// <param name="targetValue">& ...