table表多项条件筛选

这篇博客介绍了如何使用HTML和JavaScript实现一个表格的多项条件筛选功能。内容包括输入框、下拉选择和日期选择等元素,允许用户根据UM账号、部门名称、请求系统名称及时间范围进行数据过滤,并提供了导出Excel的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 <table class="am-table am-table-striped am-table-hover table-main" id="table1">


                            <span class="hhh"><label for="">UM账号: &nbsp;&nbsp;</label>


                                <input type="text" name="UM" id="UM" value="${mockSearchCondition.UM?default('')}"></span>






                            <span class="hhh"><label for="">部门名称:&nbsp;&nbsp;</label>


                                    <span class="am-form-group">


                                            <select data-am-selected="{btnSize: 'sm'}" id="groupName" name="groupName">


                                                <option value="all">查询所有</option>


                                                <#if groupNameList?exists>


                                                         <#list groupNameList as groupName>


                                                             <#if groupName=="${mockSearchCondition.groupName?default('')}">


                                                           <option value="${groupName}" selected>${groupName}</option>


                                                                 <#else>


                                                            <option value="${groupName}" >${groupName}</option>


                                                             </#if>


                                                         </#list>


                                                    </#if>


                                            </select>


                                        </span>


                                </span>






                            <span class="hhh"><label for="">请求系统名称:&nbsp;&nbsp; </label>


                                        <input type="text" name="requestSystem"id="requestSystem" value="${mockSearchCondition.requestSystem?default('')}">


                            </span>






                            <span class="hhh">


                                        <label for="">开始时间: &nbsp;</label>


                                         <input type="Date" name="beginTime" placeholder="时间" id="beginTime" value="${mockSearchCondition.beginTime?default('')}">


                          </span>






                            <span class="hhh">


                                        <label for="">截止时间: &nbsp;</label>


                                        <input type="Date" name="endTime" placeholder="时间" id="endTime" value="${mockSearchCondition.endTime?default('')}">


                            </span>






                             <span>


                                 <button type="button" class="am-btn am-btn-primary am-btn-xs" onclick="goPage(1)" >搜索</button>


                                 <!--<input type="submit" class="am-btn am-btn-primary am-btn-xs"  value="搜索">-->


                             </span>


                            <a onclick="javascript:exportExcel();"   class="am-btn am-btn-primary am-btn-xs">导出</a>


                        </table>
### 实现 Element UI `el-table` 列的多条件筛选 为了实现在 Element UI 的 `el-table` 中对某一列或多列应用多条件筛选,可以采用自定义渲染头的方式,并结合 Vue.js 的计算属性来处理过滤逻辑。 #### 自定义头并添加筛选控件 通过使用 `render-header` 属性来自定义每一列头的内容,在其中加入用于输入筛选条件的组件(如 `<el-input>` 或者下拉框)。这允许用户直接在头上设置筛选条件[^3]。 ```html <el-table-column prop="name" label="姓名" width="180"> <template slot="header" slot-scope="{ column }"> <span>{{column.label}}</span> <el-input v-model="filters.name" placeholder="请输入名称"></el-input> </template> </el-table-column> ``` 上述代码片段展示了如何在一个名为“姓名”的列上增加一个文本框作为其对应的筛选器。每当用户在此处键入内容时,都会更新绑定的数据模型 `filters.name`。 #### 动态数据过滤 为了让格能够响应这些变化而自动刷新显示的结果集,需要监听用户的交互行为并将之转化为实际的数据查询操作。通常情况下可以通过监听输入框的变化事件 (`@change`, `@input`) 并调用相应的函数来进行实时筛选: ```javascript watch: { filters: { handler(newValue) { this.filteredData = this.originalData.filter(item => { let matchAllConditions = true; Object.keys(this.filters).forEach(key => { const filterValue = newValue[key]; if (filterValue && item[key]) { switch(typeof item[key]){ case 'string': matchAllConditions &= new RegExp(filterValue,'i').test(item[key]); break; default: matchAllConditions &= String(item[key]).includes(String(filterValue)); } } }); return matchAllConditions; }); // 更新视图中的数据源 this.tableData = [...this.filteredData]; }, deep: true, immediate: false } } ``` 这段 JavaScript 代码实现了当任何一项筛选条件发生变化时触发整个格数据的重载过程。这里假设存在两个数组变量分别存储原始未经过滤的数据(`originalData`)以及当前展示给用户的已过滤后的版本(`filteredData`);同时还有一个对象用来保存各个字段上的最新筛选状态(`filters`)。 请注意以上方法适用于简单的字符串匹配场景,对于更复杂的业务需求可能还需要进一步调整算法逻辑以满足特定的要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值