如何仅在使用 URL 参数时将搜索参数限制为数据表中的一列

How do I limit search paramter only to one column in datatables only when using URL paramter

我正在处理一个数据表,我需要将搜索限制为一列 仅当使用参数 时。 example:abc.com?search=测试。但是,如果不传递参数,它应该搜索所有列。我如何实现这一目标?这是我的代码。 这是 fiddle:http://live.datatables.net/piquxewa/1/edit

Javascript

function getUrlVars() {
      var vars = [], hash;
      var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
      for(var i = 0; i < hashes.length; i++)
      {
          hash = hashes[i].split('=');
          vars.push(hash[0]);
          vars[hash[0]] = hash[1];
      }
      return vars;
  } 
  $(document).ready(function() {

    var searchTerm = getUrlVars()['search'];
    var table = $('#example1').DataTable( {
      responsive: true,
      paging: false,
      searching: true,
      lengthChange: false,
      bInfo: false,
      bSort: true,
"columnDefs": [
    { "searchable": false, "targets": 0 }
  ],

      search: {
        search: searchTerm
      }
   });
  });

</script>

HTML:

<h2>Datatable 2</h2>

<table id="example1" class="row-border stripe dataTable no-footer dtr-inline" role="grid" style=" width: 100%;"><thead>
<tr role="row">
<th style=" width: 11%;">Date</th>
<th style=" width: 23%;">Name</th>
<th style=" width: 23%;">Type</th>
<th style=" width: 23%;">Topic</th>
<th style=" width: 20%;">Hidden</th>
</tr>

</thead><tbody>
<tr>
<td>Current</td>
<td>John Doe</td>
<td>ABC</td>
<td>Test</td>
<td>orange, banana</td>
</tr>

<tr>
<td>Current</td>
<td>Baby</td>
<td>ABC</td>
<td>Test</td>
<td>orange, banana</td>
</tr>

<tr>
<td>Current</td>
<td>Joe</td>
<td>ABC</td>
<td>Test</td>
<td>orange, banana</td>
</tr>

<tr>
<td>Current</td>
<td>John</td>
<td>ABC</td>
<td>Test</td>
<td>orange, banana</td>
</tr>




</tbody></table>
</div>


</html>

如果我理解得很好,您希望将第 0 列的 searchable 选项设置为 true 仅当 存在 search= GET参数,对吧?

否则你要设置成false.

这就是使用 三元运算符:

实现的方法
"columnDefs": [
  { "searchable": searchTerm === undefined ? false : true, "targets": 0 }
  ],