搜索栏隐藏所有元素直到搜索

时间:2017-06-29 02:18:48

标签: javascript jquery html css

我试图让我的搜索栏隐藏所有元素,直到用户实际搜索它们为止。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

2 个答案:

答案 0 :(得分:1)

由于您在表格中包含了所有搜索结果,因此您可以使用jquerys .hide()和.show()动画来整理整个表格。

隐藏表,直到用户搜索使用.hide()

隐藏表
$("#myTable").hide();

答案 1 :(得分:0)

您可以通过在搜索中选中keyup来完成此操作。如果该值为空,则您可以隐藏所有表格,否则,您可以在tdtable显示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;
};

演示:https://jsfiddle.net/p90uwdg7/1/