Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   альтернатива :contains (https://javascript.ru/forum/dom-window/54586-alternativa-contains.html)

Zimishe 23.03.2015 20:40

альтернатива :contains
 
Здравствуйте
Есть таблица из БД с id=output, есть поле поиска с id=search - есть код поиска по таблице и скрытия строк, в которых не найдено введенных данных
$(document).ready(function()	{
			
		$('#search').keyup(function()	{	// при вводе в поле

 		var a = $('#search').val();		// значение поля search в переменную

		$('#output tr').show();		// показываем все поля
		
		if ('#output td:contains("'+a+'")')	{	// если содержит значение из поля
						
		   $('#output tr:not(:contains("'+a+'"))').hide();     // то прячем поля, не содеращие значения
		
		}
 	})     			 
});


http://new.supersprox.eu/output-db/output_database.php - ссылка на таблицу.

Проблема - contain ищет по всей таблице, и это мне бы не мешало, но я хочу сделать поиск в каждом столбце по отдельности - через :nth-child(переменная) - но contain ищет по всей таблице, находит введённый символ где-то в случайной ячейке, и соотв. не скрывает её.
Есть ли альтернатива использования contains для такого поиска?

laimas 23.03.2015 20:50

Не contain ищет по всей таблице, а вы не задаете условия поиска.

Zimishe 23.03.2015 20:57

if ('#output td:nth-child(1):contains("'+a+'")')	{	// если содержит значение из поля
			
    $('#output tr:not(:contains("'+a+'"))').hide();
		}

пробую так - ищу в первом столбце, но строку, в которой в первом столбце нет вводимого - не скрывает. в какую сторону копать?

laimas 23.03.2015 21:15

Сперва надо обратить внимание на условие - у вас просто строка которая всегда будет возвращать true.

рони 23.03.2015 21:20

laimas,
:write:
$(document).ready(function() {
    $("#search").keyup(function() {
        var a = $("#search").val(),
            a = ":has(td:nth-child(1):contains('" + a + "'))";
        $("#output tr").hide().filter(a).show()
    })
});

Zimishe 23.03.2015 22:06

ваш код ищет совпадения в строке nth-child(какое-то число), мне же нужен поиск в конкретном столбце

рони 23.03.2015 22:07

Цитата:

Сообщение от Zimishe
ваш код ищет совпадения в строке nth-child(какое-то число), мне же нужен поиск в конкретном столбце

не понимаю

Zimishe 23.03.2015 22:12

Цитата:

Сообщение от рони (Сообщение 362736)
не понимаю

есть несколько столбцов, нужно искать совпадение с введёнными данными только в нём, совпадения в соседних столбцах - скрывать, как и строки, где совпадений нет вовсе. хочу сделать для каждого столбца свой input со своим id=rowname. но для понимания пока просто код, который ищет в столбце под каким-то номером.

рони 23.03.2015 22:18

Zimishe,
:-?
$(document).ready(function() {
    $("#search").keyup(function() {
        var a = $("#search").val(),
            a = ":has(td:nth-child(1):contains('" + a + "'))";
        $("#output tr").hide().filter(a).show().find('td:not(:nth-child(1))').hide()
    })
});

Zimishe 23.03.2015 22:26

Цитата:

Сообщение от рони (Сообщение 362740)
Zimishe,
:-?
$(document).ready(function() {
    $("#search").keyup(function() {
        var a = $("#search").val(),
            a = ":has(td:nth-child(1):contains('" + a + "'))";
        $("#output tr").hide().filter(a).show().find('td:not(:nth-child(1))').hide()
    })
});

лады, видно это слишком сложно для меня пока-что)
спасибо за помощь


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