vue实现input输入模糊查询的三种方式


Posted in Vue.js onAugust 14, 2022

1 计算属性实现模糊查询

vue 中通过计算属性实现模糊查询,创建 html 文件,代码直接放入即可。

这里自己导入 vue,我是导入本地已经下载好的。

<script src="./lib/vue-2.6.12.js"></script>

演示:

打开默认显示全部

vue实现input输入模糊查询的三种方式

输入关键字模糊查询,名字和年龄都可以

vue实现input输入模糊查询的三种方式

完整代码如下:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <div id="app">
      <h2>人员列表</h2>
      <input type="text" placeholder="请输入名字" v-model="keyWord">
      <table>
        <thead>
          <tr>
            <td>名字</td>
            <td>年龄</td>
          </tr>
        </thead>
        <tbody>
          <tr v-for="(item,i) in fillist" :key="i">
            <td>{{ item.name }}</td>
            <td>{{ item.age }}</td>
          </tr>
        </tbody>
      </table>
    </div>
​
    <script src="./lib/vue-2.6.12.js"></script>
​
    <script>
      const vm = new Vue({
        el: '#app',
        data: {
          keyWord:'',
          list:[
            { name: '张三', age: '18' },
            { name: '张四', age: '17' },
            { name: '张五', age: '17' },
            { name: '老六', age: '18' },
            { name: '老八', age: '18' },
            { name: '小三', age: '19' },
            { name: 'Xingyue', age: '18' },
          ]
        },
        computed:{
          fillist(){
            // 返回过滤后的数组
            return this.list.filter((p)=>{
              return p.name.indexOf(this.keyWord) !==-1 || p.age.indexOf(this.keyWord) !==-1
            })
          }
        }
      })
    </script>
  </body>
</html>

2 watch 监听实现模糊查询

vue 中通过watch 监听实现模糊查询

vue 中通过计算属性实现模糊查询,创建 html 文件,代码直接放入即可。

完整代码如下:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <div id="app">
      <h2>人员列表</h2>
      <input type="text" placeholder="请输入名字" v-model="keyWord">
      <table>
        <thead>
          <tr>
            <td>名字</td>
            <td>年龄</td>
          </tr>
        </thead>
        <tbody>
          <tr v-for="(item,i) in fillist" :key="i">
            <td>{{ item.name }}</td>
            <td>{{ item.age }}</td>
          </tr>
        </tbody>
      </table>
    </div>
​
    <script src="./lib/vue-2.6.12.js"></script>
​
    <script>
      const vm = new Vue({
        el: '#app',
        data: {
          keyWord:'',
          list:[
            { name: '张三', age: '18' },
            { name: '张四', age: '17' },
            { name: '张五', age: '17' },
            { name: '老六', age: '18' },
            { name: '老八', age: '18' },
            { name: '小三', age: '19' },
            { name: 'Xingyue', age: '18' },
          ],
          fillist:[]
        },
        watch:{
          keyWord:{
            immediate:true,//在框的值还没变化时执行如下函数显示出所有的情况
            handler(val){
              this.fillist = this.list.filter((p)=>{
                return p.name.indexOf(val) !==-1 || p.age.indexOf(val) !==-1
              })
            }
          }
        }
      })
    </script>
  </body>
</html>
演示和计算属性的一样。。

3 通过按钮点击实现模糊查询

这里我是在 vue-cli 中完成的,完整代码如下。

vue.app 代码:

<template>
  <div id="app">
    <!-- 输入框 -->
    <input type="text" v-model="value" placeholder="请输入姓名/年龄" />
    <!-- 查询按钮 -->
    <button @click="search">查询</button>
    <!-- 给table表格赋值 -->
​
    <table>
      <thead>
        <tr>
          <td>姓名</td>
          <td>年龄</td>
        </tr>
      </thead>
      <tbody>
        <tr v-for="(item,i) in tableData" :key="i">
          <td>{{ item.name }}</td>
          <td>{{ item.age }}</td>
        </tr>
      </tbody>
    </table>
  </div>
</template>
​
<script>
export default {
  data() {
    return {
      value: '',
      tableData: [
        { name: '张三', age: '18' },
        { name: '张四', age: '17' },
        { name: '张五', age: '17' },
        { name: '老六', age: '18' },
        { name: '老八', age: '18' },
        { name: '小三', age: '19' },
        { name: 'Xingyue', age: '18' },
      ],
      //表格B用原表格的数据
      tableDataB: [
        { name: '张三', age: '18' },
        { name: '张四', age: '17' },
        { name: '张五', age: '17' },
        { name: '老六', age: '18' },
        { name: '老八', age: '18' },
        { name: '小三', age: '19' },
        { name: 'Xingyue', age: '18' },
      ],
    };
  },
  methods: {
    // 点击搜索 支持模糊查询
    search() {
      //表格用原表格的数据 即 用于搜索的总数据
      this.tableData = this.tableDataB;
      //获取到查询的值,并使用toLowerCase():把字符串转换成小写,让模糊查询更加清晰
      let _search = this.value.toLowerCase();
      let newListData = []; // 用于存放搜索出来数据的新数组
      if (_search) {
        //filter 过滤数组
        this.tableData.filter((item) => {
          // newListData中 没有查询的内容,就添加到newListData中
          if (
            item.name.toLowerCase().indexOf(_search) !== -1 ||
            item.age.toLowerCase().indexOf(_search) !== -1
          ) {
            newListData.push(item);
          }
        });
      }
      //查询后的表格 赋值过滤后的数据
      this.tableData = newListData;
    },
  },
}
</script>
​
<style></style>

main.js 代码如下:

import Vue from 'vue'
import App from './App.vue'
​
Vue.config.productionTip = false
​
new Vue({
  render: h => h(App),
}).$mount('#app')

整体结构:

vue实现input输入模糊查询的三种方式

演示:

输入关键字,点击查询:

vue实现input输入模糊查询的三种方式

大小写模糊查询:

vue实现input输入模糊查询的三种方式

到此这篇关于vue实现input输入模糊查询的三种方式的文章就介绍到这了,更多相关vue input输入模糊查询内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Vue.js 相关文章推荐
Vue router安装及使用方法解析
Dec 02 Vue.js
vue基于Echarts的拖拽数据可视化功能实现
Dec 04 Vue.js
vue 数据操作相关总结
Dec 17 Vue.js
Vue 修改网站图标的方法
Dec 31 Vue.js
Vue中引入svg图标的两种方式
Jan 14 Vue.js
Vue实现简单计算器
Jan 20 Vue.js
vue.js实现点击图标放大离开时缩小的代码
Jan 27 Vue.js
vue-cli中实现响应式布局的方法
Mar 02 Vue.js
vue项目多环境配置(.env)的实现
Jul 21 Vue.js
一篇文章告诉你如何实现Vue前端分页和后端分页
Feb 18 Vue.js
Vue2.0搭建脚手架
Mar 13 Vue.js
vue封装数字翻牌器
Apr 20 Vue.js
vue本地构建热更新卡顿的问题“75 advanced module optimization”完美解决方案
Aug 05 #Vue.js
Vue深入理解插槽slot的使用
Aug 05 #Vue.js
vue3 自定义图片放大器效果的示例代码
Jul 23 #Vue.js
vue递归实现树形组件
Jul 15 #Vue.js
VUE递归树形实现多级列表
Jul 15 #Vue.js
Vue2项目中对百度地图的封装使用详解
vue如何在data中引入图片的正确路径
Jun 05 #Vue.js
You might like
php5 mysql分页实例代码
2008/04/10 PHP
Smarty中常用变量操作符汇总
2014/10/27 PHP
Laravel框架学习笔记之批量更新数据功能
2019/05/30 PHP
javascript preload&amp;lazy load
2010/05/13 Javascript
浅析JavaScript中的隐式类型转换
2013/12/05 Javascript
JavaScript中使用Math.PI圆周率属性的方法
2015/06/14 Javascript
跟我学习javascript解决异步编程异常方案
2015/11/23 Javascript
快速解决jquery.touchSwipe左右滑动和垂直滚动条冲突
2016/04/15 Javascript
jQuery获取元素父节点的方法
2016/06/21 Javascript
footer定位页面底部(代码分享)
2017/03/07 Javascript
Vue.js实现分页查询功能
2020/11/15 Javascript
微信小程序实现折叠展开效果
2018/07/19 Javascript
node删除、复制文件或文件夹示例代码
2019/08/13 Javascript
VUE中V-IF条件判断改变元素的样式操作
2020/08/09 Javascript
JS中锚点链接点击平滑滚动并自由调整到顶部位置
2021/02/06 Javascript
Python中使用select模块实现非阻塞的IO
2015/02/03 Python
pandas 实现将重复表格去重,并重新转换为表格的方法
2018/04/18 Python
PyQt5每天必学之事件与信号
2018/04/20 Python
python实现两个dict合并与计算操作示例
2019/07/01 Python
django写用户登录判定并跳转制定页面的实例
2019/08/21 Python
利用 Flask 动态展示 Pyecharts 图表数据方法小结
2019/09/04 Python
python实现手势识别的示例(入门)
2020/04/15 Python
Django Form常用功能及代码示例
2020/10/13 Python
唤醒头发毛囊的秘密武器:Grow Gorgeous
2016/08/28 全球购物
加拿大时尚潮流大码女装购物网站:Addition Elle
2018/04/02 全球购物
台湾家适得:Homeget
2019/02/11 全球购物
What's the difference between an interface and abstract class? (接口与抽象类有什么区别)
2012/10/29 面试题
代理人委托书
2014/08/01 职场文书
先进集体事迹材料范文
2014/12/25 职场文书
语文教师个人工作总结
2015/02/06 职场文书
交通肇事罪辩护词
2015/05/21 职场文书
教师实习自我鉴定总结
2019/08/20 职场文书
Golang 实现超大文件读取的两种方法
2021/04/27 Golang
redis不能访问本机真实ip地址的解决方案
2021/07/07 Redis
Redis安装使用RedisJSON模块的方法
2022/03/23 Redis
JavaScript原型链中函数和对象的理解
2022/06/16 Javascript