我试图让我的搜索栏隐藏所有元素,直到用户实际搜索它们为止。Heres a JSfiddel
<div id="search">
<form>
<input type="text" name="search" id="myInput" onkeyup="mFunction()"
placeholder="Search ?..">
</form>
<nav>
<table id="myTable">
<tr class="header">
<th style="width:500px;">Question</th>
</tr>
<tr>
<td onclick="window.location.href='#web'">What is the company email?</td>
</tr>
<tr>
<td onclick="window.location.href='#web'">Is the website currently under
development?</td>
</tr>
<tr>
<td onclick="window.location.href='#game'">Why are the games not working
online?</td>
</tr>
<tr>
<td onclick="window.location.href='#game'">What is the next game or games
that you are working on?</td>
</tr>
<tr>
<td onclick="window.location.href='#game'">Are you working on Modern Jewels
anymore?</td>
</tr>
<tr>
<td onclick="window.location.href='#game'">What are the controls for Modern
Jewels?</td>
</tr>
</table>
</div>
</nav>`
的JavaScript / jQuery的
function mFunction() {
// Declare variables
var input, filter, table, tr, td, i;
input = document.getElementById("myInput");
filter = input.value.toUpperCase();
table = document.getElementById("myTable");
tr = table.getElementsByTagName("tr");
// Loop through all table rows, and hide those who don't match the search
query
for (i = 0; i < tr.length; i++) {
td = tr[i].getElementsByTagName("td")[0];
if (td) {
if (td.innerHTML.toUpperCase().indexOf(filter) > -1) {
tr[i].style.display = "";
} else {
tr[i].style.display = "none";
}
}
}
}
你知道如何,这是一个FAQ页面,我希望用户能够在搜索中没有任何问题的情况下搜索问题。
感谢任何帮助:D
答案 0 :(得分:1)
由于您在表格中包含了所有搜索结果,因此您可以使用jquerys .hide()和.show()动画来整理整个表格。
隐藏表,直到用户搜索使用.hide()
隐藏表$("#myTable").hide();
答案 1 :(得分:0)
您可以通过在搜索中选中keyup
来完成此操作。如果该值为空,则您可以隐藏所有表格,否则,您可以在td
中table
显示contains
您的搜索
$('table').hide();
$('#myInput').on("keyup", function(){
var searchVal = $('#myInput').val();
if(searchVal == ""){
$('table').hide();
}
else{
$('table').show();
$('table tr td').show();
$('table tr td:not(:contains("' + searchVal + '"))').hide();
}
});
演示:https://jsfiddle.net/p90uwdg7/
但是此搜索是区分大小写,如果您想要克服此区分大小写,则需要覆盖contains
函数
jQuery.expr[':'].contains = function(a, index, obj) {
return jQuery(a).text().toUpperCase()
.indexOf(obj[3].toUpperCase()) >= 0;
};