合并来自多个字段输入的搜索结果
Merge Search Results From Multiple Field Inputs
我问了一个关于实时搜索表的问题,但我有多个字段,如文本和选择下拉字段。我根据我从上一个问题中得到的答案编写了一个 js 代码:
$("#deviceName").keyup(function(){
var deviceNameFilter = $(this).val();
$("#device-list_table tbody tr").each(function(){
if ($(this).text().search(new RegExp(deviceNameFilter, "i")) < 0) {
$(this).hide();
} else {
$(this).show();
}
});
});
$("#broadcastProg").change(function(){
var broadcastProgFilter = $("#broadcastProg option:selected").text();
$("#device-list_table tbody tr").each(function(){
if ($(this).text().search(new RegExp(broadcastProgFilter, "i")) < 0) {
$(this).hide();
} else {
$(this).show();
}
});
});
$("#store").change(function(){
var storeFilter = $("#store option:selected").text();
$("#device-list_table tbody tr").each(function(){
if ($(this).text().search(new RegExp(storeFilter, "i")) < 0) {
$(this).hide();
} else {
$(this).show();
}
});
});
$("#deviceModel").change(function(){
var deviceModelFilter = $("#deviceModel option:selected").text();
$("#device-list_table tbody tr").each(function(){
if ($(this).text().search(new RegExp(deviceModelFilter, "i")) < 0) {
$(this).hide();
} else {
$(this).show();
}
});
});
$("#deviceStatus").change(function(){
var deviceStatusFilter = $("#deviceStatus option:selected").text();
$("#device-list_table tbody tr").each(function(){
if ($(this).text().search(new RegExp(deviceStatusFilter, "i")) < 0) {
$(this).hide();
} else {
$(this).show();
}
});
});
$("#logOutputLog").keyup(function(){
var logOutputLogFilter = $(this).val();
$("#device-list_table tbody tr").each(function(){
if ($(this).text().search(new RegExp(logOutputLogFilter, "i")) < 0) {
$(this).hide();
} else {
$(this).show();
}
});
});
例如,我在deviceName
字段上输入关键字,表格更新并显示结果,但是当我从下拉字段中选择一个选项时broadcastProg
它也会显示结果,但仅显示所选选项的结果deviceName
而不考虑字段的结果。所以应该是这样,假设当我deviceName
文本字段中输入"iPhone"并在broadcastProg
下拉字段中选择"时间表 1"时,表格应该在"设备名称"列下显示"iPhone"行,在广播节目列下显示"时间表 1"。那么我该如何合并结果呢?
此外,deviceName
字段应仅搜索"设备名称"列,不包括其他列。就我而言,它会搜索所有列。
希望有人能帮忙。
考虑到您的deviceName
字段是第一列,那么您可以这样写以仅在此列中搜索
$(document).ready(function(){
$("#deviceName").keyup(function(){
var deviceNameFilter = $(this).val();
$("#device-list_table td:first-child ").each(function(){
if ($(this).text().search(new RegExp(deviceNameFilter, "i")) < 0) {
$(this).parent().hide();
}else {
$(this).parent().show();
}
});
});
您的broadcastProg
在第二列中,然后您可以给出td:nth-child(2)
而不是td:first-child
对于合并,您需要实现一些逻辑。例如:您在 else 部分中显示元素对吗?在那里你可以给出这样的 if 条件
if( $("#broadcastProg option:selected").text()== ""){
$(this).parent().show();
}
相关文章:
- AngularJS/HTML/Bootstrap元素用于动态搜索结果
- 在web应用程序中的新搜索中重新加载搜索结果(不带jQuery)
- 检查搜索结果是否存在多次如果是,则在Javascript中只显示一个结果
- 显示可链接的搜索结果+对齐方式
- 谷歌位置服务附近搜索结果基于正确的地图中心的位置
- Javascript:使用用户输入搜索数组
- 为自定义网站创建JavaScript搜索框,创建显示搜索结果的弹出窗口
- 主干,如何记住搜索结果
- 为什么不'我的扩展程序不会出现在Chrome网上商店的搜索结果中
- 如何从谷歌自定义搜索下载搜索结果
- (临时)在Web应用程序中存储JSON搜索结果
- Angular JS根据搜索结果和点击事件更新DOM元素
- 停止 jQuery 自动完成以过滤/搜索结果并填充整个源数组数据
- 使用 jQuery UI 折叠面板显示 couchDB 数据库搜索结果时出现问题
- 如何在不使用任何 html 输入/搜索元素的情况下读取本地客户端文本文件
- 引导 3 - 文本输入下的下拉搜索结果
- 合并来自多个字段输入的搜索结果
- 在某些字符输入角度后显示搜索结果
- 清除输入文本时如何隐藏 ajax 搜索结果
- 当使用AngularJS单击搜索结果时,将输入重置为初始值