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 相关文章推荐
jQuery库与其他JS库冲突的解决办法
Feb 07 Javascript
javascript字符串与数组转换汇总
May 26 Javascript
JavaScript实现标题栏文字轮播效果代码
Oct 24 Javascript
基于jquery实现省市区三级联动效果
Dec 25 Javascript
利用JS实现点击按钮后图片自动切换的简单方法
Oct 24 Javascript
JQuery和HTML5 Canvas实现弹幕效果
Jan 04 Javascript
详解基于Koa2开发微信二维码扫码支付相关流程
May 16 Javascript
vue-router之nuxt动态路由设置的两种方法小结
Sep 26 Javascript
vue2配置scss的方法步骤
Jun 06 Javascript
详解微信小程序工程化探索之webpack实战
Apr 20 Javascript
Element Input输入框的使用方法
Jul 26 Javascript
javascript canvas实现简易时钟例子
Sep 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 heredoc和phpwind的模板技术使用方法小结
2008/03/28 PHP
php引用传值实例详解学习
2013/11/06 PHP
php调用c接口无错版介绍
2014/03/11 PHP
PHP与MYSQL中UTF8编码的中文排序实例
2014/10/21 PHP
php表单提交实例讲解
2015/11/12 PHP
PHP中substr_count()函数获取子字符串出现次数的方法
2016/01/07 PHP
PHP通过文件路径获取文件名的实例代码
2018/10/14 PHP
xml分页+ajax请求数据源+dom取结果实例代码
2008/10/31 Javascript
Javascript 函数对象的多重身份
2009/06/28 Javascript
基于jQuery的可用于选项卡及幻灯的切换插件
2011/03/28 Javascript
使用jQuery.wechat构建微信WEB应用
2014/10/09 Javascript
jQuery中parentsUntil()方法用法实例
2015/01/07 Javascript
jQuery幻灯片带缩略图轮播效果代码分享
2015/08/17 Javascript
AngularJS通过ng-route实现基本的路由功能实例详解
2016/12/13 Javascript
jquery.flot.js简单绘制折线图用法示例
2017/03/13 Javascript
深入浅析AngularJS中的一次性数据绑定 (bindonce)
2017/05/11 Javascript
微信小程序报错:this.setData is not a function的解决办法
2017/09/27 Javascript
Vue单页面应用中实现Markdown渲染
2021/02/14 Vue.js
html5以及jQuery实现本地图片上传前的预览代码实例讲解
2021/03/01 jQuery
python如何实现excel数据添加到mongodb
2015/07/30 Python
Python使用Srapy框架爬虫模拟登陆并抓取知乎内容
2016/07/02 Python
python对json的相关操作实例详解
2017/01/04 Python
Python 变量类型详解
2018/10/10 Python
详解如何用TensorFlow训练和识别/分类自定义图片
2019/08/05 Python
Django设置Postgresql的操作
2020/05/14 Python
使用Python构造hive insert语句说明
2020/06/06 Python
Python爬虫之Selenium警告框(弹窗)处理
2020/12/04 Python
介绍一下OSI七层模型
2012/07/03 面试题
中专生毕业自我鉴定
2013/11/01 职场文书
超市优秀员工事迹材料
2014/05/01 职场文书
社区助残日活动总结
2014/08/29 职场文书
学习焦裕禄观后感
2015/06/09 职场文书
goland 设置project gopath的操作
2021/05/06 Golang
AJAX实现省市县三级联动效果
2021/10/16 Javascript
Python机器学习实战之k-近邻算法的实现
2021/11/27 Python
Windows Server 2019 安装DHCP服务及相关配置
2022/04/28 Servers