vue 简单自动补全的输入框的示例


Posted in Javascript onMarch 12, 2018

实现一个输入框,输入信息后显示由后台返回的数据,供用户选择,之前用的elm的组件,不过那个有点大。。。简单的情况下自己实现一个也能满足要求。。。应该吧。。。

vue 简单自动补全的输入框的示例

主题包括一个input用于输入,一个div用于展示数据,div里面是数据项item

当在input中按下回车时,会根据信息去后台获取数据,如果用户点击了别的地方,input失去焦点,则提示的div也应该收起来

bug:

在blur事件中,如果直接将isShow设置为false会出问题,先失去焦点,显示面板消失,所以你的点击不会被监听到。。。设置一个计时器,在点击之后10ms后将面板收起来,问题解决。。。

显示div将内容撑开,改变其他组件布局,设置div的属性,即可,高度设为0,z-index很大,就不会改变其他组件位置

height: 0;
z-index: 999;
<template>
 <div class="container">
  <input v-model="msg" @keyup.enter="search" class="msg" @blur="blur"/>
  <div class="select-panel">
   <div v-show="isShow" v-for="w in words" class="select-item" @click="click_item(w)">{{w['content']}}</div>
  </div>
 </div>
</template>

简单实现代码

<template>
 <div class="container">
  <input v-model="msg" @keyup.enter="search" class="msg" @blur="blur"/>
  <div class="select-panel">
   <div v-show="isShow" v-for="w in words" class="select-item" @click="click_item(w)">{{w['content']}}</div>
  </div>
 </div>
</template>

<script>
 import {search_word} from "../api/word-api";

 export default {
  name: "auto-complete",
  data() {
   return {
    msg: '',
    words: [],
    isShow: false
   }
  },
  computed: {},

  methods: {
   blur() {
    setTimeout(() => {
      this.isShow = false
     },
     200)
   },
   async search() {
    console.log('search msg', this.msg)
    this.words = await search_word(this.msg)
    console.log(this.words)
    this.isShow = true
   },
   click_item(w) {
    console.log('click word', w)
    this.$emit('add_word', w)
   }
  },

 }
</script>

<style scoped>

 .container {
  display: flex;
  flex-grow: 0;
  flex-shrink: 0;
  box-sizing: border-box;
 }

 .msg {
  margin: 5px;
 }

 .select-panel {
  height: 0;
  z-index: 999;

 }

 .select-item {
  /*height: 0;*/
  z-index: 999;
  margin: 1px;
  padding: 2px;
  background: #fff;
  opacity: 0.8;
 }
</style>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript Array.prototype.slice的使用示例
Nov 14 Javascript
js调用iframe实现打印页面内容的方法
Mar 04 Javascript
老生常谈javascript的类型转换
Oct 12 Javascript
详解vue.js组件化开发实践
Dec 14 Javascript
用 js 的 selection range 操作选择区域内容和图片
Apr 18 Javascript
浅谈React前后端同构防止重复渲染
Jan 05 Javascript
AngularJS 事件发布机制
Aug 28 Javascript
jQuery位置选择器用法实例分析
Jun 28 jQuery
微信用户访问小程序的登录过程详解
Sep 20 Javascript
vue实现评论列表功能
Oct 25 Javascript
Angular性能优化之第三方组件和懒加载技术
May 10 Javascript
vue中data里面的数据相互使用方式
Jun 05 Vue.js
webpack打包js的方法
Mar 12 #Javascript
AngularJS对动态增加的DOM实现ng-keyup事件示例
Mar 12 #Javascript
vue路由懒加载的实现方法
Mar 12 #Javascript
vue移动UI框架滑动加载数据的方法
Mar 12 #Javascript
详解vuex的简单使用
Mar 12 #Javascript
js提取中文拼音首字母的封装工具类
Mar 12 #Javascript
基于express中路由规则及获取请求参数的方法
Mar 12 #Javascript
You might like
PHP中使用Memache作为进程锁的操作类分享
2015/03/30 PHP
thinkphp实现图片上传功能
2016/01/13 PHP
Symfony2安装的方法(2种方法)
2016/02/04 PHP
详解php语言最牛掰的Laravel框架
2017/11/20 PHP
js 获取class的元素的方法 以及创建方法getElementsByClassName
2013/03/11 Javascript
jquery选择器、属性设置用法经验总结
2013/09/08 Javascript
浅析JavaScript中两种类型的全局对象/函数
2013/12/05 Javascript
jquery获取URL中参数解决中文乱码问题的两种方法
2013/12/18 Javascript
jquery中ajax使用error调试错误的方法
2015/02/08 Javascript
两种js监听滚轮事件的实现方法
2016/05/13 Javascript
JS中Json数据的处理和解析JSON数据的方法详解
2016/06/29 Javascript
详解前后端分离之VueJS前端
2017/05/24 Javascript
原生js FileReader对象实现图片上传本地预览效果
2020/03/27 Javascript
vue将对象新增的属性添加到检测序列的方法
2018/02/24 Javascript
详解使用jQuery.i18n.properties实现js国际化
2018/05/04 jQuery
js运算符的一些特殊用法
2018/07/29 Javascript
微信小程序之下拉列表实现方法解析(附完整源码)
2019/08/23 Javascript
vue中进行微博分享的实例讲解
2019/10/14 Javascript
JavaScript实现英语单词题库
2019/12/24 Javascript
vue 中的 render 函数作用详解
2020/02/28 Javascript
[00:12]DAC2018 天才少年转战三号位,他的SOLO是否仍如昔日般强大?
2018/04/06 DOTA
介绍Python的@property装饰器的用法
2015/04/28 Python
Python切换pip安装源的方法详解
2016/11/18 Python
Python数据持久化shelve模块用法分析
2018/06/29 Python
python爬取微信公众号文章
2018/08/31 Python
Python通过for循环理解迭代器和生成器实例详解
2019/02/16 Python
Django使用中间键实现csrf认证详解
2019/07/22 Python
Python tempfile模块生成临时文件和临时目录
2020/09/30 Python
施华洛世奇德国官网:SWAROVSKI德国
2017/02/01 全球购物
私人委托书格式
2014/09/10 职场文书
2014年学校工作总结
2014/11/20 职场文书
六年级小学生评语
2014/12/26 职场文书
小学班级标语口号大全
2015/12/26 职场文书
golang gopm get -g -v 无法获取第三方库的解决方案
2021/05/05 Golang
JavaScript严格模式不支持八进制的问题讲解
2021/11/07 Javascript
MySQL 原理与优化之原数据锁的应用
2022/08/14 MySQL