【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 ...
随机推荐
- Android BrocastReceiver解析
简介 BroadcastReceiver(广播接收器)是Android四大组件之一,是一个用来响应系统范围内的广播组件,可以从Android系统和其它app发送或接收广播消息,类似于发布 - 订阅设计 ...
- JavaScript开发工具简明历史
译者按: JavaScript开发要用到的工具越来越多,越来越复杂,为什么呢?你真的弄明白了吗? 原文: Modern JavaScript Explained For Dinosaurs 为了保证可 ...
- 学习记录(一)之h5_canvas
canvas(画布) canvas(画布): 利用JS在网页中绘制图像. 标签:<canvas></canvas> 属性:height,width(宽高属性要写在行内样式中); ...
- vue过滤器用法实例分析
过滤器: vue提供过滤器: capitalize uppercase currency.... ? 1 2 3 <div id="box"> {{msg|cu ...
- js获取对象的长度
var obj= { "name": "wuqian", "sex": "famale", "hello&qu ...
- Atom插件安装及推荐
简介(了解更多去google或baidu) Atom 代码编辑器支持 Windows.Mac.Linux 三大桌面平台,完全免费,并且已经在 GitHub 上开放了全部的源代码.在经过一段长时间的迭代 ...
- 微信小程序-查询快递
1.新建快速启动项目 2.在设置里面勾选不校验合法域名,以防编译报错 3.在app.json中改一下窗口表现:app.json—"navigationBarTitleText": ...
- 聊天ListView
我们知道,在微信或者QQ聊天的时候,会出现至少两种布局,即收到的消息和自己发送的消息,这种效果可以用listView来实现.类似于下面这样的界面. 主要在Adapter的getView()里面下笔. ...
- JAVA TestNG单元测试详解
TestNG单元测试详解 by:授客 QQ:1033553122 1. 测试环境 2 2. 介绍 2 3. Annotation 2 4. testng.xml 3 4.1. 例1 3 4.2. ...
- Android为TV端助力 handler ,message消息发送方式
1.Message msg = Message.obtain(mainHandler) msg.obj=obj;//添加你需要附加上去的内容 msg.what = what;//what消息处理的类 ...