Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.10.2015, 23:24
Новичок на форуме
Отправить личное сообщение для Cresis Посмотреть профиль Найти все сообщения от Cresis
 
Регистрация: 06.10.2015
Сообщений: 5

Вместе с результатом выводить "категорию"(Поиск по таблице)
Привет, есть поиск по таблице:Ссылка на кодепен
При вводе текста, который соответствует тексту в таблице, все остальные строчки обрезаются.
Суть в том, что по мимо обычных строчек, есть "категории"(строка на 4 колонки):
<tr> <td colspan="4" style="text-align:center; text-decoration:underline;">Категория 1</td> </tr>

Нужно что бы по мимо результатов, выводилась соответствующая результату категория, т.е строка на 4 колонки которая находится выше результата.
Как нибудь это можно реализовать?

Код:
$(document).ready(function() {
  $(".search").keyup(function () {
    var searchTerm = $(".search").val();
    var listItem = $('.results tbody').children('tr');
    var searchSplit = searchTerm.replace(/ /g, "'):containsi('")
    
  $.extend($.expr[':'], {'containsi': function(elem, i, match, array){
        return (elem.textContent || elem.innerText || '').toLowerCase().indexOf((match[3] || "").toLowerCase()) >= 0;
    }
  });
    
  $(".results tbody tr").not(":containsi('" + searchSplit + "')").each(function(e){
    $(this).attr('visible','false');
  });

  $(".results tbody tr:containsi('" + searchSplit + "')").each(function(e){
    $(this).attr('visible','true');
  });

  var jobCount = $('.results tbody tr[visible="true"]').length;
    $('.counter').text(jobCount + ' результат(ов)');

  if(jobCount == '0') {$('.no-result').show();}
    else {$('.no-result').hide();}
		  });
});


Разметка таблицы(Таблица на бутстрапе, но это не важно)
<div class="form-group pull-right">
<input type="text" class="search form-control" placeholder="What you looking for?">
</div>
<span class="counter pull-right"></span>
<table class="table table-hover table-bordered results">
  <thead>
    <tr>
      <th>#</th>
      <th class="col-md-5 col-xs-5">Name / Surname</th>
      <th class="col-md-4 col-xs-4">Job</th>
      <th class="col-md-3 col-xs-3">City</th>
    </tr>
    <tr class="warning no-result">
      <td colspan="4"><i class="fa fa-warning"></i> No result</td>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th scope="row">1</th>
      <td>Vatanay Özbeyli</td>
      <td>UI & UX</td>
      <td>Istanbul</td>
    </tr>
    <tr> <td colspan="4" style="text-align:center; text-decoration:underline;">Категория 1</td> </tr>
    <tr>
      <th scope="row">2</th>
      <td>Burak Özkan</td>
      <td>Software Developer</td>
      <td>Istanbul</td>
    </tr>
    <tr>
      <th scope="row">3</th>
      <td>Egemen Özbeyli</td>
      <td>Purchasing</td>
      <td>Kocaeli</td>
    </tr>
    <tr>
      <th scope="row">4</th>
      <td>Engin Kızıl</td>
      <td>Sales</td>
      <td>Bozuyük</td>
    </tr>
  </tbody>
</table>
Ответить с цитированием
  #2 (permalink)  
Старый 07.10.2015, 01:03
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

Поиск по таблице
Cresis,
class="guide" для заголовков
class="category" для категорий

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>demo</title>
 <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
  <style type='text/css'>
    body {
    font-family: Arial, Helvetica;
    font-size: 12px;
}
table {
    width: 500px;
}
tr {
    height: 20px;
}
.guide {
    text-decoration: underline;
    text-align: center;
}

.hot {
    border: 1px solid #f00;
    background-color: #FFD480;
    color: #000000;
}
.category  {
  background-color: #B0C4DE;
}
td {
  border: #0000FF 1px solid;
}

  </style>
<script>
$(function() {
    $("input#search").on("input", function() {
        var text = this.value.toLowerCase();
        $("tr:not('.guide, .category') td").removeClass("hot").each(function(i, obj) {
            if ($(obj).text().toLowerCase().indexOf(text) > -1 && text) $(obj).addClass("hot")
        });
        $("tr:not(.guide)").show().filter(function() {
            var ok = $(this).is('.category');
            return text && !$(".hot",ok ? $(this).nextUntil('.category'): this).length
        }).hide()
       var jobCount = $("tr").has('.hot').length;
       $('.counter').text(jobCount + ' результат(ов)');
    })
});
</script>


</head>
<body>
  <input id="search" type="text"></input>
  <span class="counter pull-right"></span>
<table>
    <tr class="guide">
        <td>First Name</td>
        <td>Last Name</td>
        <td>City</td>
        <td>State</td>
    </tr>
    <tr class="category" > <td colspan="4" style="text-align:center; text-decoration:underline;">Категория 1</td> </tr>
    <tr>
        <td>Manix</td>
        <td>Bolton</td>
        <td>Merizo</td>
        <td>Michigan</td>
    </tr>
    <tr>
        <td>Azalia</td>
        <td>Gallegos</td>
        <td>Plainfield</td>
        <td>Michigan</td>
    </tr>
    <tr class="category" > <td colspan="4" style="text-align:center; text-decoration:underline;">Категория 2</td> </tr>
    <tr>
        <td>Michael</td>
        <td>Shaw</td>
        <td>Rawlins</td>
        <td>New Hampshire</td>
    </tr>
    <tr>
        <td>Matthew</td>
        <td>Parker</td>
        <td>Chino Hills</td>
        <td>Michigan</td>
    </tr>
</table>

</body>


</html>

Последний раз редактировалось рони, 07.10.2015 в 13:31.
Ответить с цитированием
  #3 (permalink)  
Старый 07.10.2015, 12:31
Новичок на форуме
Отправить личное сообщение для Cresis Посмотреть профиль Найти все сообщения от Cresis
 
Регистрация: 06.10.2015
Сообщений: 5

Оо, это великолепно! То, что нужно!
Огромное спасибо за понимание и отличное решение.

А есть возможность прикрутить сюда счетчик и выдавать ошибку на подобии как в скрипте из шапки?
var jobCount = $('.results tbody tr[visible="true"]').length;
    $('.counter').text(jobCount + ' результат(ов)');


if(jobCount == '0') {$('.no-result').show();}
    else {$('.no-result').hide();}
          });
Ответить с цитированием
  #4 (permalink)  
Старый 07.10.2015, 12:53
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

Сообщение от Cresis
прикрутить сюда счетчик
смотрите код выше

Последний раз редактировалось рони, 07.10.2015 в 13:03.
Ответить с цитированием
  #5 (permalink)  
Старый 07.10.2015, 13:57
Новичок на форуме
Отправить личное сообщение для Cresis Посмотреть профиль Найти все сообщения от Cresis
 
Регистрация: 06.10.2015
Сообщений: 5

Спасибо)
Ответить с цитированием
  #6 (permalink)  
Старый 07.10.2015, 14:28
Новичок на форуме
Отправить личное сообщение для Cresis Посмотреть профиль Найти все сообщения от Cresis
 
Регистрация: 06.10.2015
Сообщений: 5

Извините, но можно еще чуть-чуть помощи...
Не могли бы Вы еще сделать так, что бы при совпадении с категорией, категория тоже выводилась?
Например: категория "Замена молнии", вводим в поле "Замена молнии" и выводится категория со всеми пунктами под ней?
Заранее спасибо!
Ответить с цитированием
  #7 (permalink)  
Старый 07.10.2015, 14:51
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

Cresis,
Ответить с цитированием
  #8 (permalink)  
Старый 07.10.2015, 21:51
Новичок на форуме
Отправить личное сообщение для Cresis Посмотреть профиль Найти все сообщения от Cresis
 
Регистрация: 06.10.2015
Сообщений: 5

Понял, спасибо еще раз)
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как выводить на печать содержимое нужного Div-а? sarik Общие вопросы Javascript 9 04.03.2013 14:02
Добавить/удалить строки в таблице zerojava Элементы интерфейса 4 31.12.2012 16:43
Как изменить цвет текста в таблице при наведении на нее? Amateur jQuery 3 01.09.2012 06:19
Криво работает скрипт jQuery поиска в таблице dim565 jQuery 0 17.12.2011 21:23
Изменение цвета ячейки в таблице, при наведении на строку другой таблицы Psychosonic Общие вопросы Javascript 12 24.11.2010 16:44