Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.03.2023, 18:38
Аватар для thislegion
Интересующийся
Отправить личное сообщение для thislegion Посмотреть профиль Найти все сообщения от thislegion
 
Регистрация: 18.05.2020
Сообщений: 14

Живой поиск в таблице. Проблема смещения колонки
Приветствую!

Помогите разобраться. Когда ищешь в левой колонке через "Поиск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>
Ответить с цитированием
  #2 (permalink)  
Старый 01.03.2023, 23:44
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

поиск в таблице по левой колонке
Сообщение от 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%;
        }
    </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>
Ответить с цитированием
  #3 (permalink)  
Старый 02.03.2023, 12:40
Аватар для thislegion
Интересующийся
Отправить личное сообщение для thislegion Посмотреть профиль Найти все сообщения от thislegion
 
Регистрация: 18.05.2020
Сообщений: 14

Сообщение от рони
запрос в левой колонке был вверху? так ?
Не совсем. Чтобы запрос был вверху, а ненужные в hide и при этом чтобы правая колонка не смещалась влево.
Ответить с цитированием
  #4 (permalink)  
Старый 02.03.2023, 14:26
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

thislegion,
не понимаю.
Ответить с цитированием
  #5 (permalink)  
Старый 02.03.2023, 15:00
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

thislegion,
скрывать всю строку или только ячейку?
Ответить с цитированием
  #6 (permalink)  
Старый 02.03.2023, 18:15
Аватар для thislegion
Интересующийся
Отправить личное сообщение для thislegion Посмотреть профиль Найти все сообщения от thislegion
 
Регистрация: 18.05.2020
Сообщений: 14

Чтобы вот так было
Ответить с цитированием
  #7 (permalink)  
Старый 02.03.2023, 18:35
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

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>
Ответить с цитированием
  #8 (permalink)  
Старый 02.03.2023, 19:33
Аватар для thislegion
Интересующийся
Отправить личное сообщение для thislegion Посмотреть профиль Найти все сообщения от thislegion
 
Регистрация: 18.05.2020
Сообщений: 14

Похоже это то что нужно
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите изменить живой поиск Никита Белан Events/DOM/Window 0 05.12.2018 21:35
JavaScript не сортирует колонки с датой в таблице HTML Sashkouuu Элементы интерфейса 0 25.03.2017 15:38
Выделение колонки в таблице darl Общие вопросы Javascript 10 19.09.2013 14:55
проблема отображения dialog в таблице kazakn AJAX и COMET 1 06.07.2012 14:42
Не совсем обычный фрейм и выезжающий текст при наводе на картинку. amaz245 Элементы интерфейса 35 25.12.2010 17:29