[英]How do paging and filter work well?
I have a table with paging and filter . 我有一个带有分页和过滤器的表。 I set the limit to 5 and it work's well when the page is loaded, but when I use a filter to fetch the data, its shows me more than 5 rows.
我将限制设置为5,并且在加载页面时效果很好,但是当我使用过滤器获取数据时,它显示的行数超过了5行。 I hope it can keep limit 5 and paging.
我希望它可以保持限制5和分页。
@foreach($products as $item)
<tr name='items'>
<td><a href="#" name='type' data-pk='{{$item->id}}'>{{$item->type_id}}</a></td>
<td><input class = 'imgInp btn btn-default' type="file" name="icon" data-input="false">
<img />
<button class='btn btn-primary' style='display:none'>upload</button>
<button class='btn btn-danger' style='display:none'>cancel</button>
</td>
<td><a href="#" name='name' data-pk='{{$item->id}}' class="editable">{{$item->name}}</a></td>
<td><a href="#" name='pricing' data-pk='{{$item->id}}' class="editable">{{$item->pricing}}</a></td>
<td><a href="#" name='short_description' data-pk='{{$item->id}}' class="editable">{{$item->short_description}}</a></td>
<td><a href='#' class="fa fa-trash fa-lg" aria-hidden="true" data-pk='{{$item->id}}' name='delete'></a></td>
</tr>
@endforeach
here is my code 这是我的代码
$('#search').keyup(function(){ var input, filter, table, tr, td, i; input = document.getElementById("search"); filter = input.value.toUpperCase(); table = document.getElementById("product_table"); tr = $("tr[name=items]"); for (i = 0; i < tr.length; i++) { td = tr[i].getElementsByTagName("td")[0]; td_1 = tr[i].getElementsByTagName("td")[1]; td_2 = tr[i].getElementsByTagName("td")[2]; td_3 = tr[i].getElementsByTagName("td")[3]; td_4 = tr[i].getElementsByTagName("td")[4]; if (td || td_1 || td_2 || td_3 || td_4) { if (td.innerHTML.toUpperCase().indexOf(filter) > -1 || td_1.innerHTML.toUpperCase().indexOf(filter) > -1 || td_2.innerHTML.toUpperCase().indexOf(filter) > -1 || td_3.innerHTML.toUpperCase().indexOf(filter) > -1 || td_4.innerHTML.toUpperCase().indexOf(filter) > -1) { tr[i].style.display = ""; } else { tr[i].style.display = "none"; } } } });
.thumb { height: 100px; border: 1px solid #000; margin: 10px 5px 0 0; } .paging-nav { text-align: right; padding-top: 2px; } .paging-nav a { margin: auto 1px; text-decoration: none; display: inline-block; padding: 1px 7px; background: #91b9e6; color: white; border-radius: 3px; } .paging-nav .selected-page { background: #187ed5; font-weight: bold; } #search_product{ float: right; padding-bottom: 10px; }
<link href="http://code.jquery.com/ui/1.12.1/themes/smoothness/jquery-ui.css" rel="stylesheet"/> <link href="https://cdnjs.cloudflare.com/ajax/libs/jsgrid/1.5.3/jsgrid.min.css" rel="stylesheet"/> <link href="https://cdnjs.cloudflare.com/ajax/libs/jsgrid/1.5.3/jsgrid-theme.min.css" rel="stylesheet"/> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jsgrid/1.5.3/jsgrid.min.js"></script> <div class="tab-pane fade in active" id="update"> <br> <div id="search_product" class="input-group input-wrapper" align="right"> <span class="input-group-addon">search</span> <input type="text" id="search" class="form-control" placeholder=" "> </div> <table id="product_table" class="table"> <tbody><tr style="display: table-row;"> <td>type</td> <td>icon</td> <td>name</td> <td>pricing</td> <td>note</td> <td>delete</td> </tr> <tr name="items" style="display: table-row;"> <td><a href="#" name="type" data-pk="48">0</a></td> <td><input class="imgInp btn btn-default" type="file" name="icon" data-input="false"> <img> <button class="btn btn-primary" style="display:none">upload</button> <button class="btn btn-danger" style="display:none">cancel</button> </td> <td><a href="#" name="name" data-pk="48" class="editable editable-click">name</a></td> <td><a href="#" name="pricing" data-pk="48" class="editable editable-click">10</a></td> <td><a href="#" name="short_description" data-pk="48" class="editable editable-click">note</a></td> <td><a href="#" class="fa fa-trash fa-lg" aria-hidden="true" data-pk="48" name="delete"></a></td> </tr> <tr name="items" style="display: table-row;"> <td><a href="#" name="type" data-pk="49">0</a></td> <td><input class="imgInp btn btn-default" type="file" name="icon" data-input="false"> <img> <button class="btn btn-primary" style="display:none">upload</button> <button class="btn btn-danger" style="display:none">cancel</button> </td> <td><a href="#" name="name" data-pk="49" class="editable editable-click">name</a></td> <td><a href="#" name="pricing" data-pk="49" class="editable editable-click">10</a></td> <td><a href="#" name="short_description" data-pk="49" class="editable editable-click">note</a></td> <td><a href="#" class="fa fa-trash fa-lg" aria-hidden="true" data-pk="49" name="delete"></a></td> </tr> <tr name="items" style="display: table-row;"> <td><a href="#" name="type" data-pk="50">0</a></td> <td><input class="imgInp btn btn-default" type="file" name="icon" data-input="false"> <img> <button class="btn btn-primary" style="display:none">upload</button> <button class="btn btn-danger" style="display:none">cancel</button> </td> <td><a href="#" name="name" data-pk="50" class="editable editable-click">name</a></td> <td><a href="#" name="pricing" data-pk="50" class="editable editable-click">10</a></td> <td><a href="#" name="short_description" data-pk="50" class="editable editable-click">note</a></td> <td><a href="#" class="fa fa-trash fa-lg" aria-hidden="true" data-pk="50" name="delete"></a></td> </tr> <tr name="items" style="display: table-row;"> <td><a href="#" name="type" data-pk="51">0</a></td> <td><input class="imgInp btn btn-default" type="file" name="icon" data-input="false"> <img> <button class="btn btn-primary" style="display:none">upload</button> <button class="btn btn-danger" style="display:none">cancel</button> </td> <td><a href="#" name="name" data-pk="51" class="editable editable-click">name</a></td> <td><a href="#" name="pricing" data-pk="51" class="editable editable-click">10</a></td> <td><a href="#" name="short_description" data-pk="51" class="editable editable-click">note</a></td> <td><a href="#" class="fa fa-trash fa-lg" aria-hidden="true" data-pk="51" name="delete"></a></td> </tr> <tr name="items" style="display: none;"> <td><a href="#" name="type" data-pk="52">0</a></td> <td><input class="imgInp btn btn-default" type="file" name="icon" data-input="false"> <img> <button class="btn btn-primary" style="display:none">upload</button> <button class="btn btn-danger" style="display:none">cancel</button> </td> <td><a href="#" name="name" data-pk="52" class="editable editable-click">name</a></td> <td><a href="#" name="pricing" data-pk="52" class="editable editable-click">10</a></td> <td><a href="#" name="short_description" data-pk="52" class="editable editable-click">note</a></td> <td><a href="#" class="fa fa-trash fa-lg" aria-hidden="true" data-pk="52" name="delete"></a></td> </tr> <tr name="items" style="display: none;"> <td><a href="#" name="type" data-pk="53">0</a></td> <td><input class="imgInp btn btn-default" type="file" name="icon" data-input="false"> <img> <button class="btn btn-primary" style="display:none">upload</button> <button class="btn btn-danger" style="display:none">cancel</button> </td> <td><a href="#" name="name" data-pk="53" class="editable editable-click">name</a></td> <td><a href="#" name="pricing" data-pk="53" class="editable editable-click">20</a></td> <td><a href="#" name="short_description" data-pk="53" class="editable editable-click">note</a></td> <td><a href="#" class="fa fa-trash fa-lg" aria-hidden="true" data-pk="53" name="delete"></a></td> </tr> <tr name="items" style="display: none;"> <td><a href="#" name="type" data-pk="54">0</a></td> <td><input class="imgInp btn btn-default" type="file" name="icon" data-input="false"> <img> <button class="btn btn-primary" style="display:none">upload</button> <button class="btn btn-danger" style="display:none">cancel</button> </td> <td><a href="#" name="name" data-pk="54" class="editable editable-click">name</a></td> <td><a href="#" name="pricing" data-pk="54" class="editable editable-click">20</a></td> <td><a href="#" name="short_description" data-pk="54" class="editable editable-click">note</a></td> <td><a href="#" class="fa fa-trash fa-lg" aria-hidden="true" data-pk="54" name="delete"></a></td> </tr> <tr name="items" style="display: none;"> <td><a href="#" name="type" data-pk="55">0</a></td> <td><input class="imgInp btn btn-default" type="file" name="icon" data-input="false"> <img> <button class="btn btn-primary" style="display:none">upload</button> <button class="btn btn-danger" style="display:none">cancel</button> </td> <td><a href="#" name="name" data-pk="55" class="editable editable-click">name</a></td> <td><a href="#" name="pricing" data-pk="55" class="editable editable-click">20</a></td> <td><a href="#" name="short_description" data-pk="55" class="editable editable-click">note</a></td> <td><a href="#" class="fa fa-trash fa-lg" aria-hidden="true" data-pk="55" name="delete"></a></td> </tr> <tr name="items" style="display: none;"> <td><a href="#" name="type" data-pk="56">0</a></td> <td><input class="imgInp btn btn-default" type="file" name="icon" data-input="false"> <img> <button class="btn btn-primary" style="display:none">upload</button> <button class="btn btn-danger" style="display:none">cancel</button> </td> <td><a href="#" name="name" data-pk="56" class="editable editable-click">name</a></td> <td><a href="#" name="pricing" data-pk="56" class="editable editable-click">20</a></td> <td><a href="#" name="short_description" data-pk="56" class="editable editable-click">note</a></td> <td><a href="#" class="fa fa-trash fa-lg" aria-hidden="true" data-pk="56" name="delete"></a></td> </tr> <tr name="items" style="display: none;"> <td><a href="#" name="type" data-pk="57">0</a></td> <td><input class="imgInp btn btn-default" type="file" name="icon" data-input="false"> <img> <button class="btn btn-primary" style="display:none">upload</button> <button class="btn btn-danger" style="display:none">cancel</button> </td> <td><a href="#" name="name" data-pk="57" class="editable editable-click">name</a></td> <td><a href="#" name="pricing" data-pk="57" class="editable editable-click">20</a></td> <td><a href="#" name="short_description" data-pk="57" class="editable editable-click">note</a></td> <td><a href="#" class="fa fa-trash fa-lg" aria-hidden="true" data-pk="57" name="delete"></a></td> </tr> </tbody></table><div class="paging-nav"><a href="#" data-direction="-1"><<</a><a href="#" data-page="0">1</a><a href="#" data-page="1">2</a><a href="#" data-page="2">3</a><a href="#" data-direction="1">>></a></div> </div>
Simply add a counter: 只需添加一个计数器:
$('#search').keyup(function(){
var input, filter, table, tr, td, i, count = 0;
input = document.getElementById("search");
filter = input.value.toUpperCase();
table = document.getElementById("product_table");
tr = $("tr[name=items]");
for (i = 0; i < tr.length && count < 5; i++) {
td = tr[i].getElementsByTagName("td")[0];
td_1 = tr[i].getElementsByTagName("td")[1];
td_2 = tr[i].getElementsByTagName("td")[2];
td_3 = tr[i].getElementsByTagName("td")[3];
td_4 = tr[i].getElementsByTagName("td")[4];
if (td || td_1 || td_2 || td_3 || td_4) {
if (td.innerHTML.toUpperCase().indexOf(filter) > -1 ||
td_1.innerHTML.toUpperCase().indexOf(filter) > -1 ||
td_2.innerHTML.toUpperCase().indexOf(filter) > -1 ||
td_3.innerHTML.toUpperCase().indexOf(filter) > -1 ||
td_4.innerHTML.toUpperCase().indexOf(filter) > -1) {
count++;
tr[i].style.display = "";
} else {
tr[i].style.display = "none";
}
}
}
});
Also, you may want to get rid of all of your magic numbers and use jQuery a little more effectively. 另外,您可能希望摆脱所有魔术数字,并更有效地使用jQuery。 If I were to rewrite your code, I'd do it as follows:
如果要重写您的代码,请按照以下步骤操作:
$('#search').keyup(function () {
const maxNums = 5;
var filter = $(this).val().toUpperCase(),
count = 0;
$('tr[name="items"]').each(function () {
if (count >= maxNums) return;
var possible = true;
$('td', this).each(function () {
if ($(this).html().toUpperCase().indexOf(filter) < 0) {
possible = false;
}
})
if (possible) {
if (count++ < maxNums) {
$(this).css('display', 'block');
}
} else {
$(this).css('display', 'none');
}
});
});
I'm sure there are many on this site who could perform this even better than I. :) 我敢肯定,这个网站上有很多人可以比我做得更好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.