【发布时间】:2019-06-19 10:35:04
【问题描述】:
我正在尝试使用 JQuery 将下拉过滤器放入 html 表中。这是代码。
report.php
<table id ="myTable" class="table table-striped">
<thead>
<tr>
<th></th>
<th> First Name </th>
<th> Last Name </th>
<th> Phone </th>
<th> Email </th>
<th> Gender</th>
<th>Term
<select id="filterText" onchange='filterText()'>
<option disabled selected>Select</option>
<option value="all">All</option>
<option value="Fall2018">Fall2018</option>
<option value="Srping2019">Spring2019</option>
</select></th>
<th> Action </th>
</tr>
</thead>
<?php
if (count($report) === 0) {
echo "<tr>No Reports</tr>";
} else {
for ($i = 0; $i < count($report); $i++) {
echo
"<tr class='row'>
<td>{$report[$i]['FName']}</td>
<td>{$report[$i]['LName']}</td>
<td>{$report[$i]['HPhone']}</td>
<td>{$report[$i]['PEmail']}</td>
<td>{$report[$i]['Gender']}</td>
<td>{$report[$i]['Term']}</td>
<td><a class=btn href='read.php?id=".$report[$i]['RegId']."'>Read</a></td>
</tr>";
}
}
?>
</table>
main.js
function filterText()
{
var rex = new RegExp($('#filterText').val());
if(rex ==="/all/"){clearFilter();}else{
$('.row').show();
$('.row').filter(function() {
return rex.test($(this).text());
}).hide();
}
}
function clearFilter()
{
$('.filterText').val('');
$('.row').show();
}
我正在将下拉过滤器添加到术语列。这段代码给出了相反的结果。就像我单击下拉列表的“全部”选项时一样,它会在结果中显示 Spring2019。当我点击“Spring2019”时,它会显示所有值。并且“Fall2018”还显示了 Spring2019 的所有值。
你能检查一下代码有什么问题吗?
【问题讨论】:
-
如果你问一个 JavaScript 问题,你应该添加 HTML 而不是 PHP。
-
是的,但这就是我尝试过的。你能看到任何错误吗?为什么会给出相反的结果
-
如果你有 PHP,你就有生成的 HTML。您可以将其添加到 sn-p 中,以便那些希望帮助您的人更容易。考虑到您公开的代码 - PHP,任何想要帮助的人都必须在服务器上运行 int。
-
这里的这句话永远不会是真的。如果(雷克斯 ==="/all/")。您正在使用 === 也比较类型相等性。一个是 RegExp 对象,另一个是字符串。因此,这永远不会是真的。我建议更改以比较控件的值而不是正则表达式
-
你能帮我编辑一下吗?我对 JavaScript 很陌生
标签: javascript jquery html-table dropdown