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采用数组实现tab菜单切换效果
Dec 12 Javascript
用js一次改变多个input的readonly属性值的方法
Jun 11 Javascript
js实现简单鼠标跟随效果的方法
Apr 10 Javascript
移动端脚本框架Hammer.js
Dec 15 Javascript
详解Vue.js之视图和数据的双向绑定(v-model)
Jun 23 Javascript
集合Bootstrap自定义confirm提示效果
Sep 19 Javascript
vue-router history模式下的微信分享小结
Jul 05 Javascript
JavaScript使用indexOf()实现数组去重的方法分析
Sep 04 Javascript
Vue项目页面跳转时浏览器窗口上方显示进度条功能
Mar 26 Javascript
React.js组件实现拖拽排序组件功能过程解析
Apr 27 Javascript
vue 动态生成拓扑图的示例
Jan 03 Vue.js
如何用JavaScript实现一个数组惰性求值库
May 05 Javascript
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 面试碰到过的问题 在此做下记录
2011/06/09 PHP
PHP关联链接常用代码
2012/11/05 PHP
php二维数组排序与默认自然排序的方法介绍
2013/04/27 PHP
PHP实现检测客户端是否使用代理服务器及其匿名级别
2015/01/07 PHP
部署PHP时的4个配置修改说明
2015/10/19 PHP
网页开发中的容易忽略的问题 javascript HTML中的table
2009/04/15 Javascript
很棒的学习jQuery的12个网站推荐
2011/04/28 Javascript
DWR实现模拟Google搜索效果实现原理及代码
2013/01/30 Javascript
如何获取网站icon有哪些可行的方法
2014/06/05 Javascript
Javascript遍历table中的元素示例代码
2014/07/08 Javascript
javascript日期格式化方法小结
2015/12/17 Javascript
基于BootStrap Metronic开发框架经验小结【七】数据的导入、导出及附件的查看处理
2016/05/12 Javascript
Angular中$cacheFactory的作用和用法实例详解
2016/08/19 Javascript
jQuery web 组件 后台日历价格、库存设置的代码
2016/10/14 Javascript
Angular.js中定时器循环的3种方法总结
2017/04/27 Javascript
React Native 环境搭建的教程
2017/08/19 Javascript
使用RN Animated做一个“添加购物车”动画的方法
2018/09/12 Javascript
nodejs微信开发之授权登录+获取用户信息
2019/03/17 NodeJs
浅谈javascript错误处理
2019/08/11 Javascript
layer实现弹出层自动调节位置
2019/09/05 Javascript
[00:35]2016完美“圣”典风云人物:冷冷宣传片
2016/12/08 DOTA
Python入门篇之条件、循环
2014/10/17 Python
Python实现小数转化为百分数的格式化输出方法示例
2017/09/20 Python
Python搭建FTP服务器的方法示例
2018/01/19 Python
基于Python 装饰器装饰类中的方法实例
2018/04/21 Python
Python实现网站表单提交和模板
2019/01/15 Python
pycharm配置pyqt5-tools开发环境的方法步骤
2019/02/11 Python
numpy中生成随机数的几种常用函数(小结)
2020/08/18 Python
Python模拟键盘输入自动登录TGP
2020/11/27 Python
西班牙灯具网上商店:Lampara.es
2018/06/05 全球购物
蔻驰法国官网:COACH法国
2018/11/14 全球购物
纪检干部先进事迹材料
2014/08/23 职场文书
党风廉正建设责任书
2015/01/29 职场文书
2015年工程部工作总结
2015/04/30 职场文书
基于tensorflow权重文件的解读
2021/05/26 Python
javascript对象3个属性特征
2021/11/17 Javascript