Живой поиск в таблице. Проблема смещения колонки
Приветствую!
Помогите разобраться. Когда ищешь в левой колонке через "Поиск1", то правая колонка смещается в левую. Возможно ли сделать чтобы правая колонка не смещалась и запрос в левой колонке был вверху? <!DOCTYPE html> <html lang="ru"> <head> <title>Table</title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/fomantic-ui/2.8.8/semantic.min.css">' <script type="text/javascript" src="https://cdn.datatables.net/1.12.1/js/jquery.dataTables.min.js"></script> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/fomantic-ui/2.8.8/semantic.min.css"> <style> .tablinks, .tablinks2 {font-size:12px;font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif} .tablinks:hover, .tablinks2:hover{cursor:pointer;color:white;background-color:black;} tr .tablinks {background-color: #C8C8C8} .leftable{width:20%} </style> </head> <body> <table id="mytable" class="leftable"> <thead> <tr> <th> <div class="ui fluid icon input"> <input type="text" id="search" placeholder="Поиск1"> <i class="search icon"></i> </div> </th> <th> <div class="ui fluid icon input"> <input type="text" id="search-right" placeholder="Поиск2"> <i class="search icon"></i> </div> </th> </tr> </thead> <tbody> <tr> <td class="tablinks">Яблоко</td> <td class="tablinks2">Яблоко</td> </tr> <tr> <td class="tablinks">Банан</td> <td class="tablinks2">Банан</td> </tr> <tr> <td class="tablinks">Апельсин</td> <td class="tablinks2">Апельсин</td> </tr> <tr> <td class="tablinks">Киви</td> <td class="tablinks2">Киви</td> </tr> <tr> <td class="tablinks">Мандарин</td> <td class="tablinks2">Мандарин</td> </tr> <tr> <td class="tablinks">Арбуз</td> <td class="tablinks2">Арбуз</td> </tr> <tr> <td class="tablinks">Груша</td> <td class="tablinks2">Груша</td> </tr> </tbody> <script> $(document).ready(function(){ $("#search").keyup(function(){ _this = this; $.each($("tr .tablinks"), function() { if($(this).text().toLowerCase().indexOf($(_this).val().toLowerCase()) === -1){ $(this).hide(); } else { $(this).show(); } }); }); }); </script> </table> </body> </html> |
поиск в таблице по левой колонке
Цитата:
<!DOCTYPE html> <html lang="ru"> <head> <title>Table</title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/fomantic-ui/2.8.8/semantic.min.css">' <style> .tablinks, .tablinks2 { font-size: 12px; font-family: Lato, 'Helvetica Neue', Arial, Helvetica, sans-serif } .tablinks:hover, .tablinks2:hover { cursor: pointer; color: white; background-color: black; } tr .tablinks { background-color: #C8C8C8 } .leftable { width: 20%; } </style> </head> <body> <table id="mytable" class="leftable"> <thead> <tr> <th> <div class="ui fluid icon input"> <input type="text" id="search" placeholder="Поиск1"> <i class="search icon"></i> </div> </th> <th> <div class="ui fluid icon input"> <input type="text" id="search-right" placeholder="Поиск2"> <i class="search icon"></i> </div> </th> </tr> </thead> <tbody> <tr> <td class="tablinks">Яблоко</td> <td class="tablinks2">Яблоко</td> </tr> <tr> <td class="tablinks">Банан</td> <td class="tablinks2">Банан</td> </tr> <tr> <td class="tablinks">Апельсин</td> <td class="tablinks2">Апельсин</td> </tr> <tr> <td class="tablinks">Киви</td> <td class="tablinks2">Киви</td> </tr> <tr> <td class="tablinks">Мандарин</td> <td class="tablinks2">Мандарин</td> </tr> <tr> <td class="tablinks">Арбуз</td> <td class="tablinks2">Арбуз</td> </tr> <tr> <td class="tablinks">Груша</td> <td class="tablinks2">Груша</td> </tr> </tbody> </table> <script> $(function() { let listTR = $("#mytable tbody tr"); $("#search").keyup(function() { let val = this.value.toLowerCase(); let arr = listTR.get().sort(function(a, b) { a = a.querySelector('.tablinks').textContent.toLowerCase(); b = b.querySelector('.tablinks').textContent.toLowerCase(); a = a.indexOf(val); b = b.indexOf(val); if (b == -1 && a == -1) return 0; if (b == -1) return -1; if (a == -1) return 1; return a - b; }); $("#mytable tbody").append(arr); }); }); </script> </body> </html> |
Цитата:
|
thislegion,
не понимаю. |
thislegion,
скрывать всю строку или только ячейку? |
Чтобы вот так было
![]() |
thislegion,
<!DOCTYPE html> <html lang="ru"> <head> <title>Table</title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/fomantic-ui/2.8.8/semantic.min.css">' <style> .tablinks, .tablinks2 { font-size: 12px; font-family: Lato, 'Helvetica Neue', Arial, Helvetica, sans-serif } .tablinks:hover, .tablinks2:hover { cursor: pointer; color: white; background-color: black; } tr .tablinks { background-color: #C8C8C8 } .leftable { width: 20%; } td.tablinks.hide { opacity: 0; } </style> </head> <body> <table id="mytable" class="leftable"> <thead> <tr> <th> <div class="ui fluid icon input"> <input type="text" id="search" placeholder="Поиск1"> <i class="search icon"></i> </div> </th> <th> <div class="ui fluid icon input"> <input type="text" id="search-right" placeholder="Поиск2"> <i class="search icon"></i> </div> </th> </tr> </thead> <tbody> <tr> <td class="tablinks">Яблоко</td> <td class="tablinks2">Яблоко</td> </tr> <tr> <td class="tablinks">Банан</td> <td class="tablinks2">Банан</td> </tr> <tr> <td class="tablinks">Апельсин</td> <td class="tablinks2">Апельсин</td> </tr> <tr> <td class="tablinks">Киви</td> <td class="tablinks2">Киви</td> </tr> <tr> <td class="tablinks">Мандарин</td> <td class="tablinks2">Мандарин</td> </tr> <tr> <td class="tablinks">Арбуз</td> <td class="tablinks2">Арбуз</td> </tr> <tr> <td class="tablinks">Груша</td> <td class="tablinks2">Груша</td> </tr> </tbody> </table> <script> $(function() { const listTd = $("#mytable tbody tr .tablinks").get(); const collator = new Intl.Collator(["en", "ru"], { numeric: true }); $("#search").keyup(function() { const val = this.value.toLowerCase().trim(); const arrTd = listTd.slice(0).sort(function(a, b) { const aTxt = a.textContent.toLowerCase(); const bTxt = b.textContent.toLowerCase(); const aI = aTxt.indexOf(val); const bI = bTxt.indexOf(val); a.classList.toggle('hide', aI == -1); b.classList.toggle('hide', bI == -1); if (!val) return 0; if (aI == -1 && bI == -1) return collator.compare(aTxt, bTxt); if (aI == -1) return 1; if (bI == -1) return -1; return aI - bI || collator.compare(aTxt, bTxt); }); $("#mytable tbody tr").each(function(i, tr) { tr.prepend(arrTd[i]) }) }); }); </script> </body> </html> |
Похоже это то что нужно
|
Часовой пояс GMT +3, время: 04:08. |