Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.03.2016, 11:16
Интересующийся
Отправить личное сообщение для santey12 Посмотреть профиль Найти все сообщения от santey12
 
Регистрация: 27.02.2016
Сообщений: 18

Поиск по таблице
Всем, доброго времени суток!
Возникли трудности при поиске в таблице:
  1. Не получается организовать поиск по <select>-ам
  2. Перемещение нескольких одинаковых строк.
<p align="middle"><input id="srch" type="text" class="srch" value="Введите текст для поиска" onfocus="this.value=''"><button id="btn" class="button">Поиск</button></p>
<script src="js/tbl.js"></script>
<table id="tbl" border="1" >
<thead>
<tr><th>Номер строки</th><th>Марка</th><th>Тип кузова</th><th>Дата</th><th>Количество</th><th>Статус</th></tr>
</thead>
<tbody>
<tr><td>1</td><td>Хендай</td><td>универсал</td><td value="2016-01-01">2016-01-01</td><td>11</td><td><select><option value="Open">Open</option><option value="In progress">In progress</option><option selected value="Resolved">Resolved</option></select></td></tr>
<tr><td>2</td><td>Тойта</td><td>седан</td><td value="2016-02-01">2016-02-01</td><td>10</td><td><select><option selected value="Open">Open</option><option value="In progress">In progress</option><option value="Resolved">Resolved</option></select></td></tr>
<tr><td>3</td><td>Лада</td><td>седан</td><td value="2016-03-01">2016-03-01</td><td>300</td><td><select><option selected value="Open">Open</option><option value="In progress">In progress</option><option value="Resolved">Resolved</option></select></td></tr>
<tr><td>4</td><td>Форд</td><td>хэтчбек</td><td value="2016-04-01">2016-04-01</td><td>120</td><td><select><option value="Open">Open</option><option selected value="In progress">In progress</option><option value="Resolved">Resolved</option></select></td></tr>
<tr><td>5</td><td>Шкода</td><td>лифтбэк</td><td value="2016-05-01">2016-05-01</td><td>99</td><td><select><option value="Open">Open</option><option value="In progress">In progress</option><option selected value="Resolved">Resolved</option></select></td></tr>
</tbody>
</table>

function search(searchWord){ //создание функции 
	for(var i = 1, l = tbl.rows.length; i < l; i++){ //перебор столбцов по длине 
		for(var j = 0, l1 = tbl.rows[i].cells.length; j < l1; j++){ //перебор ячеек 
			if(tbl.rows[i].cells[j].innerHTML.indexOf(searchWord) +1){ //если длина и ячейки совпадают, то перемещаем строку на первую позицию  
				var clone = tbl.rows[i].cloneNode(true);
				tbl.rows[i].parentNode.removeChild(tbl.rows[i]);
				tbl.rows[1].parentNode.insertBefore(clone, tbl.rows[1]);
				tbl.rows[1].style.backgroundColor = 'paleturquoise'; //изменяем первой/найденной ячейки 
				tbl.rows[2].style.backgroundColor = 'white'; //изменяем цвет второй ячейки 
				return true;
			}
		}
	}
}

btn.onclick = function(){ //присваиваем кнопке функцию 
	search(srch.value)
}

Так же можно посмотреть на http://jsfiddle.net/rhLv99nz/9/

Последний раз редактировалось santey12, 08.03.2016 в 13:15. Причина: опечатка
Ответить с цитированием
  #2 (permalink)  
Старый 08.03.2016, 12:08
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

santey12,
если несколько строк совпадают с поиском, которая будет выше?
Ответить с цитированием
  #3 (permalink)  
Старый 08.03.2016, 12:13
Интересующийся
Отправить личное сообщение для santey12 Посмотреть профиль Найти все сообщения от santey12
 
Регистрация: 27.02.2016
Сообщений: 18

Та строка, которая стоит первой в таблице.
Ответить с цитированием
  #4 (permalink)  
Старый 08.03.2016, 12:56
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

santey12,
<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <style type="text/css">
        .search tbody tr:nth-child(1) {
            background-color: paleturquoise;
        }
    </style>

    <title></title>

    <script>
        window.onload = function() {
            function search(searchWord) { //создание функции
                tbl.classList.remove("search");
                if(!searchWord) return;
                for (var i = 1, l = tbl.rows.length; i < l; i++) { //перебор столбцов по длинне
                    for (var j = 0, l1 = tbl.rows[i].cells.length - 1; j < l1; j++) { //перебор ячеек
                        if (~tbl.rows[i].cells[j].innerHTML.indexOf(searchWord) || ~tbl.rows[i].querySelector('select').value.indexOf(searchWord)) { //если длинна??? и ячейки совпадают, то перемещаем строку на первую позицию
                            tbl.rows[1].parentNode.insertBefore(tbl.rows[i], tbl.rows[1]);
                            tbl.classList.add("search")
                            return true;
                        }
                    }
                }
            }

            btn.onclick = function() { //присваиваем кнопке функцию
                search(srch.value)
            }
        }
    </script>


</head>

<body>
    <p align="middle">
        <input id="srch" type="text" class="srch" value="Введите текст для поиска" onfocus="this.value=''">
        <button id="btn" class="button">Поиск</button>
    </p>
    <script src="js/tbl.js"></script>
    <table id="tbl" border="1">
        <thead>
            <tr>
                <th>Номер строки</th>
                <th>Марка</th>
                <th>Тип кузова</th>
                <th>Дата</th>
                <th>Количество</th>
                <th>Статус</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>1</td>
                <td>Хендай</td>
                <td>универсал</td>
                <td value="2016-01-01">2016-01-01</td>
                <td>11</td>
                <td>
                    <select>
                        <option value="Open">Open</option>
                        <option value="In progress">In progress</option>
                        <option selected value="Resolved">Resolved</option>
                    </select>
                </td>
            </tr>
            <tr>
                <td>2</td>
                <td>Тойта</td>
                <td>седан</td>
                <td value="2016-02-01">2016-02-01</td>
                <td>10</td>
                <td>
                    <select>
                        <option selected value="Open">Open</option>
                        <option value="In progress">In progress</option>
                        <option value="Resolved">Resolved</option>
                    </select>
                </td>
            </tr>
            <tr>
                <td>3</td>
                <td>Лада</td>
                <td>седан</td>
                <td value="2016-03-01">2016-03-01</td>
                <td>300</td>
                <td>
                    <select>
                        <option selected value="Open">Open</option>
                        <option value="In progress">In progress</option>
                        <option value="Resolved">Resolved</option>
                    </select>
                </td>
            </tr>
            <tr>
                <td>4</td>
                <td>Форд</td>
                <td>хэтчбек</td>
                <td value="2016-04-01">2016-04-01</td>
                <td>120</td>
                <td>
                    <select>
                        <option value="Open">Open</option>
                        <option selected value="In progress">In progress</option>
                        <option value="Resolved">Resolved</option>
                    </select>
                </td>
            </tr>
            <tr>
                <td>5</td>
                <td>Шкода</td>
                <td>лифтбэк</td>
                <td value="2016-05-01">2016-05-01</td>
                <td>99</td>
                <td>
                    <select>
                        <option value="Open">Open</option>
                        <option value="In progress">In progress</option>
                        <option selected value="Resolved">Resolved</option>
                    </select>
                </td>
            </tr>
        </tbody>
    </table>

</body>

</html>
Ответить с цитированием
  #5 (permalink)  
Старый 08.03.2016, 13:07
Интересующийся
Отправить личное сообщение для santey12 Посмотреть профиль Найти все сообщения от santey12
 
Регистрация: 27.02.2016
Сообщений: 18

рони,
Не совсем понял, чем Ваш пример лучше моего?
Ответить с цитированием
  #6 (permalink)  
Старый 08.03.2016, 13:12
Аватар для Cuntmann
Аспирант
Отправить личное сообщение для Cuntmann Посмотреть профиль Найти все сообщения от Cuntmann
 
Регистрация: 26.01.2014
Сообщений: 78

Друзья, не пишите слово "длина" с двумя буквами "н"! Сюда же и дети ходят!
Ответить с цитированием
  #7 (permalink)  
Старый 08.03.2016, 13:16
Интересующийся
Отправить личное сообщение для santey12 Посмотреть профиль Найти все сообщения от santey12
 
Регистрация: 27.02.2016
Сообщений: 18

Cuntmann,
Прошу прощения, но лучше бы Вы по делу написали
Ответить с цитированием
  #8 (permalink)  
Старый 08.03.2016, 13:26
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

santey12,
return true в вашей функции уберите и будет вам счастье. Осталось только одинаковые строки отсортировать.
Ответить с цитированием
  #9 (permalink)  
Старый 08.03.2016, 13:33
Аватар для Cuntmann
Аспирант
Отправить личное сообщение для Cuntmann Посмотреть профиль Найти все сообщения от Cuntmann
 
Регистрация: 26.01.2014
Сообщений: 78

Это и есть по делу!
Ответить с цитированием
  #10 (permalink)  
Старый 08.03.2016, 13:50
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

понятно нужна обычная сортировка строк с выделением при совпадении в поиске ... осталось только дождаться когда ТС придумает приоритеты сортировки
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск по таблице и перестановка строк KemPavel jQuery 2 19.10.2015 12:28
Поиск по таблице - вывод cript Элементы интерфейса 8 15.05.2014 07:50
фильтрация и поиск в таблице htm FedyaLutkovski Элементы интерфейса 0 28.12.2012 20:11
Криво работает скрипт jQuery поиска в таблице dim565 jQuery 0 17.12.2011 21:23
Поиск в тексте javascript jQuery 3 31.05.2011 11:40