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 相关文章推荐
Extjs入门之动态加载树代码
Apr 09 Javascript
如何使用JS获取IE上传文件路径(IE7,8)
Jul 08 Javascript
jQuery下实现等待指定元素加载完毕(可改成纯js版)
Jul 11 Javascript
javascript window.open打开新窗口后无法再次打开该窗口问题的解决方法
Apr 12 Javascript
原生JS实现旋转木马式图片轮播插件
Apr 25 Javascript
JS实现动态表格的添加,修改,删除功能(推荐)
Jun 15 Javascript
bootstrap实现每隔5秒自动轮播效果
Dec 20 Javascript
axios中cookie跨域及相关配置示例详解
Dec 20 Javascript
Angular HMR(热模块替换)功能实现方法
Apr 04 Javascript
详解vue项目中使用token的身份验证的简单实践
Mar 08 Javascript
uni-app微信小程序登录并使用vuex存储登录状态的思路详解
Nov 04 Javascript
原生JavaScript实现拖动校验功能
Sep 29 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中socket通信机制实例详解
2015/01/03 PHP
php函数连续调用实例分析
2015/07/30 PHP
PHP基于yii框架实现生成ICO图标
2015/11/13 PHP
PHP+Ajax验证码验证用户登录
2016/07/20 PHP
php和html的区别点详细总结
2019/09/24 PHP
javascript 遍历验证所有文本框的值
2009/08/27 Javascript
JavaScript Event学习第九章 鼠标事件
2010/02/08 Javascript
JS函数验证总结(方便js客户端输入验证)
2010/10/29 Javascript
JavaScript打开word文档的实现代码(c#)
2012/04/16 Javascript
Chosen 基于jquery的选择框插件使用方法
2012/05/30 Javascript
jquery indexOf使用方法
2013/08/19 Javascript
Js中的onblur和onfocus事件应用介绍
2013/08/27 Javascript
js读取注册表的键值示例
2013/09/25 Javascript
jquery选择器使用详解
2014/04/08 Javascript
DOM节点删除函数removeChild()用法实例
2015/01/12 Javascript
实例代码讲解jquery easyui动态tab页
2015/11/17 Javascript
webpack+vue.js快速入门教程
2016/10/12 Javascript
解决Angular.Js与Django标签冲突的方案
2016/12/20 Javascript
Vue拖拽组件开发实例详解
2018/05/11 Javascript
JS字符串常用操作方法实例小结
2019/06/24 Javascript
React实现轮播效果
2020/08/25 Javascript
nodejs中使用worker_threads来创建新的线程的方法
2021/01/22 NodeJs
python3设计模式之简单工厂模式
2017/10/17 Python
python pands实现execl转csv 并修改csv指定列的方法
2018/12/12 Python
在keras中获取某一层上的feature map实例
2020/01/24 Python
浅谈pandas.cut与pandas.qcut的使用方法及区别
2020/03/03 Python
python计算auc的方法
2020/09/09 Python
python 三种方法实现对Excel表格的读写
2020/11/19 Python
伦敦新晋轻奢耳饰潮牌:Tada & Toy
2020/05/25 全球购物
你所知道的集合类都有哪些?主要方法?
2012/12/31 面试题
EJB与JAVA BEAN的区别
2016/08/29 面试题
房地产销售计划书
2014/01/10 职场文书
如何写好建议书
2014/03/13 职场文书
交通违章检讨书
2014/09/21 职场文书
社区扶贫帮困工作总结
2015/05/20 职场文书
《废话连篇——致新手》——chinapizza
2022/04/05 无线电