如何仅在使用 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 }
],
我正在处理一个数据表,我需要将搜索限制为一列 仅当使用参数 时。 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 }
],