Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Фильтрация данных (https://javascript.ru/forum/dom-window/49235-filtraciya-dannykh.html)

Alfer 04.08.2014 13:07

Фильтрация данных
 
Добрый день! использую скрипт для фильтрации данных в поле поиск:

function FilterInit(){
	jQuery("#sorting-table tr:has(td)").each(function(){
	var t = jQuery(this).text().toLowerCase(); //all row text
	jQuery("<td class='indexColumn'></td>").hide().text(t).appendTo(this);});//each tr
	jQuery("#sort-field").keyup(function(){
		if (this.value != ''){
			var s = jQuery(this).val().split(" ");
			//show all rows.
			jQuery("#sorting-table tr:hidden").show();
			jQuery.each(s, function(){
				jQuery("#sorting-table tr:visible .indexColumn:not(:contains('"+ this + "'))").parent().hide();
			});
		}
		else {jQuery("#sorting-table tr:hidden").show();}
		tableHeight = jQuery("#sorting-table tbody").height() + jQuery("#sorting-table thead").height();
		jQuery(".table-holder3").height(tableHeight);
	});//key up.
	jQuery(".sort-list a").click(function(){
		var s = jQuery(this).text().split(" ");
		//show all rows.
		jQuery("#sorting-table tr:hidden").show();
		jQuery.each(s, function(){
			jQuery("#sorting-table tr:visible .indexColumn:not(:contains('"+ this + "'))").parent().hide();
		});
		tableHeight = jQuery("#sorting-table tbody").height() + jQuery("#sorting-table thead").height();
		jQuery(".table-holder3").height(tableHeight);
		return false;
	});
	jQuery(".sort-table .all").click(function(){
		jQuery("#sorting-table tr:hidden").show();
		tableHeight = jQuery("#sorting-table tbody").height() + jQuery("#sorting-table thead").height();
		jQuery(".table-holder3").height(tableHeight);
	});
}


скрипт работает, но есть одна проблема, если я ввожу слово: материал, ничего не находит, если я введу Материал - покажет мне Материал, как сделать так чтоб введя с регистром или без, показало мне Материал

Спасибо

WorM32 04.08.2014 13:28

Очевидно, что в таком случае нельзя использовать для поиска псевдо-селектор :contains, тк он является регистрозависимым.

http://api.jquery.com/contains-selector/

рони 04.08.2014 13:39

Alfer,
jQuery("#sorting-table tr:visible .indexColumn:not(:contains('"+ this + "'))").parent().hide();

заменить на
var el = jQuery("#sorting-table tr:visible .indexColumn"), reg = new RegExp(this, 'i');
  el.each(function(indx, element){
                if(!reg.test($(element).text())) {$(element).parent().hide()}
        });

Alfer 04.08.2014 15:27

Спасибо, помогло

WorM32 04.08.2014 15:58

рони,
Не даешь никаких шансов ТСам разобраться )


Часовой пояс GMT +3, время: 00:03.