Форма поиска Я использую здесь: http://bootsnipp.com/snippets/featured/js-table-filter-simple-insensitiveИзменение таблицы яваскрипта для поиска конкретных данных
Я нашел хороший JS форму поиска, созданную Cyruxx, что я реализую на моем сайте. Можно ли изменить этот код для поиска только определенных заголовков таблиц?
Например, у меня есть:
<table class="table table-list-search">
<thead>
<tr>
<th>id</th>
<th>name</th>
<th>address</th>
</tr>
</thead>
<tbody>
<tr>
<td>107</td>
<td>John Doe</td>
<td>1074 example street</td>
</tr>
<tr>
<td>100</td>
<td>Henry</td>
<td>1111 example ave</td>
</tr>
</tbody>
</table>
Как я могу изменить код только поиск столбца ID, например. Другими словами, при наборе номера «1» будут отображаться только строки таблицы с «1» в заголовке «id». Ввод «1074» в моем примере вернет 0 результатов, в то время как «1» отобразит оба списка.
$(document).ready(function() {
var activeSystemClass = $('.list-group-item.active');
//something is entered in search form
$('#system-search').keyup(function() {
var that = this;
// affect all table rows on in systems table
var tableBody = $('.table-list-search tbody');
var tableRowsClass = $('.table-list-search tbody tr');
$('.search-sf').remove();
tableRowsClass.each(function(i, val) {
//Lower text for case insensitive
var rowText = $(val).text().toLowerCase();
var inputText = $(that).val().toLowerCase();
if(inputText != '')
{
$('.search-query-sf').remove();
tableBody.prepend('<tr class="search-query-sf"><td colspan="6"><strong>Searching for: "'
+ $(that).val()
+ '"</strong></td></tr>');
}
else
{
$('.search-query-sf').remove();
}
if(rowText.indexOf(inputText) == -1)
{
//hide rows
tableRowsClass.eq(i).hide();
}
else
{
$('.search-sf').remove();
tableRowsClass.eq(i).show();
}
});
//all tr elements are hidden
if(tableRowsClass.children(':visible').length == 0)
{
tableBody.append('<tr class="search-sf"><td class="text-muted" colspan="6">No entries found.</td></tr>');
}
});
});
Спасибо, Джордж, я понимаю, что плохо использовать практикующие фрагменты кода из Интернета, но на данный момент я не владею JS. Теперь я хочу добавить флажок/выпадающее меню, которое позволит зрителю искать по разным заголовкам таблицы по своему выбору (поиск по: 'id' или 'name' или 'email' или 'all'). Должен ли я добавлять это окно к самой функции поиска? или в другом месте? – ryank
@ RyanGoo Я понимаю вашу позицию, но, пожалуйста, помните о жертвах, которые вы совершаете. Когда вы делаете такие вещи, очень легко выявить дыры в безопасности (хотя я не думаю, что вы это делаете в приведенном выше случае), и невероятно вероятно, что вы будете выкидывать весь код из нескольких раз. Однако есть хорошие альтернативы, вы можете попробовать использовать виджет таблицы предварительной сборки с возможностью поиска. Например [datatables] (http://datatables.net/), хотя их много. Вы также можете написать что-то, что работает, и опубликовать его на codreview.stackexchange.com для комментариев. –
Чтобы ответить на ваш конкретный вопрос, если вы сделаете это так, как я рекомендую, вы можете подключить обработчик к селектору/флажку, который при выборе делает 'allRows.find ('td'). RemoveClass ('. Selectable')' allRows.find (' '+ desiredColumn) .addClass ('. выбираемые') ' –