Javascript.RU

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

скрытие ненужных строк таблицы (почти поиск)
Всем привет, опыта в JQ почти нет, а надо сделать скрытие ненужных строк в таблице

<input type="text" id="filter-input"  value=""/><br/>
<table class="table-class">
<tr>
  <th>Username</th><th>Adress</th><th>Acess</th>
</tr>
<tr>
  <td>Вася</td><td>Москва</td><td>Read</td>
</tr>
<tr>
  <td>Лёша</td><td>Питер</td><td>Write</td>
</tr>
</table>

То есть, при введении в input "М", "Мо", "Мос", "Москва" - оставался только Вася, фильтрация только по второму столбцу

запуск логики по нажатию клавиши я допёр,

$("#filter-input").live('keyup', function(e){
};


а вот как дальше обойти каждую строку и взять в ней значение второго столбца , как-то не гуглиться,
скрытие строки думаю реализовать добавлением класса, в котором display:none;
$(this).addClass("hide-class")
Ответить с цитированием
  #2 (permalink)  
Старый 02.09.2011, 15:23
Аватар для crayday
Аспирант
Отправить личное сообщение для crayday Посмотреть профиль Найти все сообщения от crayday
 
Регистрация: 30.08.2011
Сообщений: 61

вместо live просто bind - пока в live необходимости нет (или лучше коротко keyup).

Внутри функции ищем вторые столбцы и смотрим, удовлетворяют ли они поиску или нет. Если не удовлетворяют - скрываем hide(), удовлетворяют - показываем show() (короче, чем добавлять класс .hide-class)

var filter = $("#filter-input");
filter.keyup(function(e){
	$('.table-class td:nth-child(2)').each(function(){
		if(filter.val() != $(this).text().substr(0, filter.val().length)) {
			$(this).parent().hide();
		} else {
			$(this).parent().show();
		}
	});
});
Ответить с цитированием
  #3 (permalink)  
Старый 02.09.2011, 15:26
Аватар для crayday
Аспирант
Отправить личное сообщение для crayday Посмотреть профиль Найти все сообщения от crayday
 
Регистрация: 30.08.2011
Сообщений: 61

Ещё имеет смысл при проверке перевести всё в нижний регистр - и ввод пользователя и содержание ячейки
Ответить с цитированием
  #4 (permalink)  
Старый 02.09.2011, 15:59
Интересующийся
Отправить личное сообщение для m3hc Посмотреть профиль Найти все сообщения от m3hc
 
Регистрация: 02.09.2011
Сообщений: 10

Спасибо, всё работает, всё логино!
Ответить с цитированием
  #5 (permalink)  
Старый 02.09.2011, 16:02
Аватар для walik
Профессор
Отправить личное сообщение для walik Посмотреть профиль Найти все сообщения от walik
 
Регистрация: 09.11.2009
Сообщений: 1,101

мб так:
$('.table-class tr:not(:first)').filter(function() {
    return !$(this).find('td:eq(1):contains(Москва)').length;
  }).hide();
__________________
"Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете."
Мой сертификат :-D клацай

Последний раз редактировалось walik, 02.09.2011 в 16:05.
Ответить с цитированием
  #6 (permalink)  
Старый 02.09.2011, 18:21
Аватар для crayday
Аспирант
Отправить личное сообщение для crayday Посмотреть профиль Найти все сообщения от crayday
 
Регистрация: 30.08.2011
Сообщений: 61

walik,
Как лаконично! =) Только не предусмотрено проявление элементов обратно.
Ответить с цитированием
  #7 (permalink)  
Старый 02.09.2011, 18:53
Профессор
Отправить личное сообщение для ваый Посмотреть профиль Найти все сообщения от ваый
 
Регистрация: 29.06.2011
Сообщений: 445

<input type="text" id="filter-input"  value=""/><br/>
<table class="table-class">
<tr>
    <th>Username</th><th>Adress</th><th>Acess</th>
</tr>
<tr>
    <td>Вася</td><td>Москва</td><td>Read</td>
</tr>
<tr>
   <td>Лёша</td><td>Питер</td><td>Write</td>
</tr>
</table>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script>
var filter = $("#filter-input");
filter.keyup(function(e) {
    var niddle = $(this).val();
    $('.table-class tr:not(:first)').filter(function() {
        if (!$(this).find('td:eq(1)').is(':contains("' + niddle + '")')) {
            return true;
        }
        else {
            $(this).show();
            return false;
        }
    }).hide();
});
</script>
Ответить с цитированием
  #8 (permalink)  
Старый 02.09.2011, 22:34
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

моя версия
Extends : ваый's version;

живой пример :
trArr = $(".table-class tr:not(:first)");
townArr = $("td:nth-child(2n+2)", trArr);


$("#filter-input").keyup(function() {
    if(!this.value)
        return trArr.show()
    trArr.hide();
    townArr.filter(":contains("+this.value+")").parent("tr").show();
});


<input type="text" id="filter-input"  value=""/><br/>
<table class="table-class">
<tr>
    <th>Username</th><th>Adress</th><th>Acess</th>
</tr>
<tr>
    <td>Вася</td><td>Москва</td><td>Read</td>
</tr>
<tr>
   <td>Лёша</td><td>Питер</td><td>Write</td>
</tr>
</table>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script>
trArr = $(".table-class tr:not(:first)");
townArr = $("td:nth-child(2n+2)", trArr);


$("#filter-input").keyup(function() {
    if(!this.value)
        return trArr.show()
    trArr.hide();
    townArr.filter(":contains("+this.value+")").parent("tr").show();
});
</script>
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамическое удаление строк таблицы Tankist Events/DOM/Window 16 03.07.2013 16:42
вывод последних строк с таблицы бд, как на твиттере totje jQuery 8 08.01.2011 15:46
Динамическое отображение строк таблицы JukiPuki Общие вопросы Javascript 2 18.06.2010 12:55
Перемещение строк таблицы в Firefox barcelona jQuery 17 23.02.2009 15:41
Автоматическая подсветка строк таблицы mihha Элементы интерфейса 5 01.02.2009 01:28