Всем привет!
В этой статье я выложу готовый скрипт поиска в таблице, используя JQuery.
Например, в таблице могут быть имена одноклассников, либо наименования деталей для авто и т.д.
При наборе в поиске, без перезагрузки сразу будет фильтроваться список по сходству.
Код полностью готов к использованию, вот только нужно будет заменить названия в таблице на свои.
А вот и сам код:
<style>
.results tr[visible='false'],
.no-result {
display: none;
}
.results tr[visible='true'] {
display: table-row;
}
.searchCount {
padding: 8px;
color: #ccc;
}
</style>
<div>
<input ENGINE="text" class="searchKey" placeholder="Кого ищите?">
</div>
<span class="searchCount"></span>
<table border="1" class="results">
<thead>
<tr>
<th>#</th>
<th>Имя / Фамилия</th>
<th>Год рождения</th>
<th>Место рождения</th>
</tr>
<tr class="no-result">
<td>Совпадения не найдены</td>
</tr>
</thead>
<tbody>
<tr>
<th>1</th>
<td>Джеймс Хэтфилд</td>
<td>1963</td>
<td>Калифорния, США</td>
</tr>
<tr>
<th>2</th>
<td>Клиффорд Ли Бёртон</td>
<td>1962</td>
<td>Кастро-Валли</td>
</tr>
<tr>
<th>3</th>
<td>Ларс Ульрих</td>
<td>1963</td>
<td>Гентофте, Дания</td>
</tr>
<tr>
<th>4</th>
<td>Кирк Хеммет</td>
<td>1962</td>
<td>Сан-Франциско, Калифорния</td>
</tr>
<tr>
<th>5</th>
<td>Роберт Трухильо</td>
<td>1964</td>
<td>Санта-Моника, Калифорния, США</td>
</tr>
<tr>
<th>6</th>
<td>Джейсон Ньюстед</td>
<td>1963 </td>
<td>Бэттл Крик, Мичиган</td>
</tr>
</tbody>
</table>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script>
function createExpr(arr) {
var index = 0;
var expr = [":containsiAND('" + arr[0] + "')"];
for (var i = 1; i < arr.length; i++) {
if (arr[i] === 'AND') {
expr[index] += ":containsiAND('" + arr[i + 1] + "')";
i++;
} else if (arr[i] === 'OR') {
index++;
expr[index] = ":containsiOR('" + arr[i + 1] + "')";
i++;
}
}
return expr;
}
$(document).ready(function() {
$(".searchKey").keyup(function() {
var searchTerm = $(".searchKey").val().replace(/["']/g, "");
var arr = searchTerm.split(/(AND|OR)/);
var exprs = createExpr(arr);
var searchSplit = searchTerm.replace(/AND/g, "'):containsiAND('").replace(/OR/g, "'):containsiOR('");
$.extend($.expr[':'], {
'containsiAND': function(element, i, match, array) {
return (element.textContent || element.innerText || '').toLowerCase().indexOf((match[3] || "").toLowerCase()) >= 0;
}
});
$('.results tbody tr').attr('visible', 'false');
for (var expr in exprs) {
$(".results tbody tr" + exprs[expr]).each(function(e) {
$(this).attr('visible', 'true');
});
}
var searchCount = $('.results tbody tr[visible="true"]').length;
$('.searchCount').text('найдено ' + searchCount + ' человек');
if (searchCount == '0') {
$('.no-result').show();
} else {
$('.no-result').hide();
}
if ($('.searchKey').val().length == 0) {
$('.searchCount').hide();
} else {
$('.searchCount').show();
}
});
});
</script>
РЕЗУЛЬТАТ:
В таблицу можно добавить сколько угодно списков. Вставьте в таблицу сразу перед </tbody> вот такой код (т.д. добавляем остальных):
<th>Номер</th> <td>Имя</td> <td>Год</td> <td>Место рождения</td> </tr>
Если нужно поменять в результате текст «найдено … человек»:

Откройте строку №110 и замените русские слова:
$('.searchCount').text('найдено ' + searchCount + ' человек');
searchCount - выводит количество найденных в таблице.
Вот и все.
Понравился пост? Помоги другим узнать об этой статье, кликни на кнопку социальных сетей ↓↓↓
Последние новости категории:
Похожие статьи
Популярные статьи:
-
Как узнать id компьютера
Дата: 29 марта 2013
Прокомментировано:90
просмотров: 330348 -
Размеры форматов листов А0 – А7
Дата: 23 января 2013
Прокомментировано:3
просмотров: 274701 -
Смешные логические загадки с подвохом, отгадки прилагаются
Дата: 12 ноября 2014
Прокомментировано:5
просмотров: 222536 -
Готовые макеты блоков для веб-страниц на HTML и CSS
Дата: 25 июня 2014
Прокомментировано:23
просмотров: 187748 -
Установка windows 7 на ноутбук
Дата: 18 декабря 2012
Прокомментировано:169
просмотров: 186564
2 Ответов на комментарий - Как сделать поиск в таблице на сайте
Добавить комментарий
Метки: javascript, Вебмастеру, для сайта


Как вытащить любое значение с атрибута – JS
Сайт пока не может обработать этот запрос HTTP ERROR 500
Всплывающее окно (Модальное окно) на CSS при клике по ссылке или через указанное время
Как получить значение ID при клике по слову?
Всплывающее модальное окно на CSS
Где взять готовый код курса валют на сайт (информер)?
Комментарии ВКонтакте для WordPress

Прикольный пост Степан, даже где то полезный, но больше в статике, хотя… Если работать с бд и выводить с бд всех то скорее пойдет, но это если данных мало, ну а если больше тысячи, то всех же не будешь выводить на одной странице, вот как раз тут бы как то переделать код js чтоб он работал вместе с пхп, чтобы раз и вытащил нужные данные через js, который бы дергал сервер, ну и соответственно сервер брал нужные данные с бд.
Надо будет как нибудь покавырять эту тему про которую написал.
А так да, пост полезный
Спасибо, Саш!