带有引导程序的 JavaScript 表过滤器
Posted
技术标签:
【中文标题】带有引导程序的 JavaScript 表过滤器【英文标题】:JavaScript table filters with bootstrap 【发布时间】:2020-03-08 01:58:45 【问题描述】:您好,我的表格过滤器有问题,它们可以工作,但是当我输入例如 John 并且有 3 个 Johns 时,我在表格之间出现了一些空白。我认为这是因为我没有使用 foreach 来正确显示我的信息。如果你用 theta 的名字写,是否有可能获得关于它下面所有 tbody 信息的信息?
$(document).ready(function()
$("#myInput").on("keyup", function()
var value = $(this).val().toLowerCase();
$("#myTable tr").filter(function()
$(this).toggle($(this).text().toLowerCase().indexOf(value) > -1)
);
);
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="row">
<div class="container-bg"></div>
<div class="col-lg-6 col-md-12">
<div id="content" class="content-padding">
<div class="content">
<input class="form-control" id="myInput" type="text" placeholder="Meklēt..">
<table id="myTable" class="table table-sm table-bordered table-hover">
<thead class="bg-primary">
<tr>
<th colspan="6">Title</th>
</tr>
</thead>
<tbody id="myTable">
<tr>
<td class="p-sm-3">CEO</td>
<td class="p-sm-2">John Johnson</td>
<td class="p-sm-1">test</td>
<td class="p-sm-1">test 1</td>
<td class="p-sm-1">test 2</td>
<td class="p-sm-1">test 3</td>
</tr>
</tbody>
<thead class="bg-primary">
<tr>
<th colspan="6">Title 2</th>
</tr>
</thead>
<tbody id="myTable">
<tr>
<td class="p-sm-3">CEO</td>
<td class="p-sm-2">Greg Buchanek</td>
<td class="p-sm-1">test</td>
<td class="p-sm-1">test 1</td>
<td class="p-sm-1">test 2</td>
<td class="p-sm-1">test 3</td>
</tr>
</tbody>
<thead class="bg-primary">
<tr>
<th colspan="6">Title 3</th>
</tr>
</thead>
<tbody id="myTable">
<tr>
<td class="p-sm-3">CEO</td>
<td class="p-sm-2">Kavin JP Morgan</td>
<td class="p-sm-1">test</td>
<td class="p-sm-1">test 1</td>
<td class="p-sm-1">test 2</td>
<td class="p-sm-1">test 3</td>
</tr>
<tr>
<td class="p-sm-3">CEO</td>
<td class="p-sm-2">Esmeralda Dupond</td>
<td class="p-sm-1">test</td>
<td class="p-sm-1">test 1</td>
<td class="p-sm-1">test 2</td>
<td class="p-sm-1">test 3</td>
</tr>
<tr>
<td class="p-sm-3">CEO</td>
<td class="p-sm-2">Andrew JoShnson</td>
<td class="p-sm-1">test</td>
<td class="p-sm-1">test 1</td>
<td class="p-sm-1">test 2</td>
<td class="p-sm-1">test 3</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<?php get_sidebar('right'); ?>
</div>
我的 PHP foreach 循环代码:
<div class="row">
<div class="container-bg"></div>
<?php get_sidebar(); ?>
<div class="col-lg-6 col-md-12">
<div id="content" class="content-padding">
<div class="content">
<input class="form-control" id="myInput" type="text" placeholder="Meklēt..">
<?php foreach ($division as $obj_1) ?>
<table id="myTable" class="table table-sm table-bordered table-hover">
<thead class="bg-primary">
<tr>
<th colspan="6"><?php echo $obj_1->title ?></th>
</tr>
</thead>
<tbody id="myTable">
<?php foreach ($result as $obj) ?>
<?php if( $obj_1->id == $obj->division) ?>
<tr>
<td class="p-sm-3"><?php echo $obj->position ?></td>
<td class="p-sm-2"><?php echo $obj->first_name." ".$obj->surname ?></td>
<td class="p-sm-1"><?php echo $obj->phone ?></td>
<td class="p-sm-1"><?php echo $obj->mobile ?></td>
<td class="p-sm-1"><?php echo $obj->email ?></td>
<td class="p-sm-1"><?php echo $obj->location ?></td>
</tr>
<?php ?>
<?php ?>
</tbody>
</table>
<?php ?>
</div>
</div>
</div>
<?php get_sidebar('right'); ?>
</div>
This is how it looks on my website with foreach loops
【问题讨论】:
【参考方案1】:请尝试此代码,它可以正常工作。
$(document).ready(function()
$("#myInput").on("keyup", function()
var value = $(this).val().toLowerCase();
$("#myTable tbody tr").filter(function()
$(this).toggle($(this).text().toLowerCase().indexOf(value) > -1)
);
);
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="row">
<div class="container-bg"></div>
<div class="col-lg-6 col-md-12">
<div id="content" class="content-padding">
<div class="content">
<input class="form-control" id="myInput" type="text" placeholder="Meklēt..">
<table id="myTable" class="table table-sm table-bordered table-hover">
<thead class="bg-primary">
<tr>
<th colspan="6">Title 1</th>
</tr>
</thead>
<tbody id="myTable">
<tr>
<td class="p-sm-3">CEO</td>
<td class="p-sm-2">John Johnson</td>
<td class="p-sm-1">test</td>
<td class="p-sm-1">test 1</td>
<td class="p-sm-1">test 2</td>
<td class="p-sm-1">test a</td>
</tr>
</tbody>
<thead class="bg-primary">
<tr>
<th colspan="6">Title 2</th>
</tr>
</thead>
<tbody id="myTable">
<tr>
<td class="p-sm-3">CEO</td>
<td class="p-sm-2">Greg Buchanek</td>
<td class="p-sm-1">test</td>
<td class="p-sm-1">test 1</td>
<td class="p-sm-1">test 2</td>
<td class="p-sm-1">test a</td>
</tr>
</tbody>
<thead class="bg-primary">
<tr>
<th colspan="6">Title 3</th>
</tr>
</thead>
<tbody id="myTable">
<tr>
<td class="p-sm-3">CEO</td>
<td class="p-sm-2">Kavin JP Morgan</td>
<td class="p-sm-1">test</td>
<td class="p-sm-1">test 1</td>
<td class="p-sm-1">test 2</td>
<td class="p-sm-1">test 3</td>
</tr>
<tr>
<td class="p-sm-3">CEO</td>
<td class="p-sm-2">Esmeralda Dupond</td>
<td class="p-sm-1">test</td>
<td class="p-sm-1">test 1</td>
<td class="p-sm-1">test 2</td>
<td class="p-sm-1">test 3</td>
</tr>
<tr>
<td class="p-sm-3">CEO</td>
<td class="p-sm-2">Andrew JoShnson</td>
<td class="p-sm-1">test</td>
<td class="p-sm-1">test 1</td>
<td class="p-sm-1">test 2</td>
<td class="p-sm-1">test a</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<?php get_sidebar('right'); ?>
</div>
注意:- 在上面的代码中,三个不同的标题 1-2-3 给出。如果你搜索测试然后给出不同的输出匹配值。
希望以上代码对你有用。
谢谢。
【讨论】:
感谢重播。但是您的代码与我的代码有何不同?都是一样的,很抱歉,但这并不能解决我的问题。 我不明白你想在你的桌子上做什么。请再解释一下。 是的,我的问题是我没有很好地解释我想要做什么。首先,我想做的是,当我在搜索框中写例如 John 时,它会向我显示带有 John 信息和 thead 的 table tr,但在我的表中我有 20 个不同的 thead,所以它总是会显示所有的 thead,而不仅仅是我需要的那个. 是的,这就是我所说的问题,你可以看到它显示了所有的thead元素,而不是你搜索的那个。以上是关于带有引导程序的 JavaScript 表过滤器的主要内容,如果未能解决你的问题,请参考以下文章