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单元格多列合并的实现
Nov 26 Vue.js
Vue中inheritAttrs的使用实例详解
Dec 31 Vue.js
Vue 集成 PDF.js 实现 PDF 预览和添加水印的步骤
Jan 22 Vue.js
如何在Vue项目中添加接口监听遮罩
Jan 25 Vue.js
如何管理Vue中的缓存页面
Feb 06 Vue.js
Vue实现下拉加载更多
May 09 Vue.js
Vue过滤器(filter)实现及应用场景详解
Jun 15 Vue.js
Vue项目打包、合并及压缩优化网页响应速度
Jul 07 Vue.js
vue中 this.$set的使用详解
Nov 17 Vue.js
vue中div禁止点击事件的实现
Apr 02 Vue.js
vue如何清除浏览器历史栈
May 25 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
php in_array 函数使用说明与in_array需要注意的地方说明
2010/04/13 PHP
PHP 冒泡排序 二分查找 顺序查找 二维数组排序算法函数的详解
2013/06/25 PHP
php 解析xml 的四种方法详细介绍
2016/10/26 PHP
浅析PHP中json_encode与json_decode的区别
2020/07/15 PHP
JS宝典学习笔记(下)
2007/01/10 Javascript
JavaScript与函数式编程解释
2007/04/27 Javascript
JavaScript call apply使用 JavaScript对象的方法绑定到DOM事件后this指向问题
2011/09/28 Javascript
jquery中event对象属性与方法小结
2013/12/18 Javascript
JavaScript 面向对象与原型
2015/04/10 Javascript
简介JavaScript中Math.cos()余弦方法的使用
2015/06/15 Javascript
jquery捕捉回车键及获取checkbox值与异步请求的方法
2015/12/24 Javascript
浅谈AngularJs指令之scope属性详解
2016/10/24 Javascript
jquery select2的使用心得(推荐)
2016/12/04 Javascript
基于Vue的文字跑马灯组件(npm 组件包)
2017/05/24 Javascript
用Vue写一个分页器的示例代码
2018/04/22 Javascript
layerUI下的绑定事件实例代码
2018/08/17 Javascript
ES6的解构赋值实例详解
2019/05/06 Javascript
javascript(基于jQuery)实现鼠标获取选中的文字示例【测试可用】
2019/10/26 jQuery
js回到页面指定位置的三种方式
2020/12/17 Javascript
JS+CSS实现动态时钟
2021/02/19 Javascript
python算法学习之计数排序实例
2013/12/18 Python
使用BeautifulSoup爬虫程序获取百度搜索结果的标题和url示例
2014/01/19 Python
Python实例之wxpython中Frame使用方法
2014/06/09 Python
python获取远程图片大小和尺寸的方法
2015/03/26 Python
python3.X 抓取火车票信息【修正版】
2018/06/19 Python
Python如何读取文件中图片格式
2020/01/13 Python
Django models filter筛选条件详解
2020/03/16 Python
伦敦平价潮流珠宝首饰品牌:Astrid & Miyu
2016/10/10 全球购物
领导调研接待方案
2014/02/27 职场文书
战略合作意向书范本
2014/04/01 职场文书
企业金融服务方案
2014/06/03 职场文书
单位员工收入证明样本
2014/10/09 职场文书
民主评议党员个人总结
2015/02/13 职场文书
《折线统计图》教学反思
2016/02/22 职场文书
职工趣味运动会开幕词
2016/03/04 职场文书
Python 的演示平台支持 WSGI 接口的应用
2022/04/20 Python