Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » Мощный поиск по локальной базе через браузер

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3

Открыть новую тему     Написать ответ в эту тему

D1D1D1D

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Спасибо! Подключил "jquery-3.3.1.js", но не срабатывает. Правильно ли я собрал? —

Код:
<style type="text/css">
#table,
#table td {
  border: 1px solid black;
}
</style>
 
<script src="jquery-3.3.1.js"></script>
<script>
var data = [
 {id: 1, col1: 'qw1-col1', col2: 'ui1-col2'},
 {id: 2, col1: 'er2-col1', col2: 'op2-col2'},
 {id: 3, col1: 'rt3-col1', col2: 'as3-col2'},
 {id: 4, col1: 'ty4-col1', col2: 'sd4-col2'},
 {id: 5, col1: 'yu5-col1', col2: 'df5-col2'},
];
 
$('#search').on('keyup', function() {
  var val = $(this).val(), t = $('#table');
  try {
     var regex = new RegExp(val, 'i');
     $('tr', t).each(function() {
        var row = $(this), hide = true;
        $('td', row).each(function() {
           if ($(this).text().match(regex))
              hide = false;
        });
        if (hide) row.hide();
        else row.show();
     });
  }
  catch(err) {    
  }
});
 
$(function() {
  var t = $('#table');
  t.html('');
  data.forEach(function(row) {
     var r = $('<tr>');
     Object.values(row).forEach(function(cell) {
        r.append($('<td>').html(cell));
     });
     t.append(r);
  });
});
</script>
</head>
<body>
 
<div><input type='text' id='search'></div>
<table id='table'></table>

Всего записей: 1362 | Зарегистр. 05-04-2010 | Отправлено: 03:09 09-10-2020
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
D1D1D1D
скрипты должны быть в конце страницы, иначе на момент обращения таблицы еще нет.
либо завернуты в $(function() {...});
то есть срабатывающие после загрузки страницы.

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 03:20 09-10-2020
D1D1D1D

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
 
Возможно ли эту функцию добавить в упоминавшийся выше скрипт DataGrid Filtering? Ну или чтобы было не обязательно Regex, а хотя бы возможность использовать маску — то есть, вместо какой-то буквы использовать точку или ? знак
 
 
 
Добавлено:
Круто получилось!) А каким был бы вариант, чтобы изначально таблица была бы скрыта, а показывались бы только соответствующие запросу строки?

Всего записей: 1362 | Зарегистр. 05-04-2010 | Отправлено: 03:22 09-10-2020 | Исправлено: D1D1D1D, 03:33 09-10-2020
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
D1D1D1D
можно убрать отрисовку таблицы и data вообще, если работа с уже готовой таблицей.
 

Цитата:
в упоминавшийся выше скрипт

обсуждали уже, что там муторно.
 

Цитата:
а показывались бы только соответствующие запросу строки?

как писал выше, отрисовываем таблицу и применяем только код
Цитата:
$('#search').on('keyup', function() {
  var val = $(this).val(), t = $('#table');
  try {
     var regex = new RegExp(val, 'i');
     $('tr', t).each(function() {
        var row = $(this), hide = true;
        $('td', row).each(function() {
           if ($(this).text().match(regex))
              hide = false;
        });
        if (hide) row.hide();
        else row.show();
     });
  }
  catch(err) {    
  }
});


Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 03:36 09-10-2020
D1D1D1D

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii

Цитата:

Цитата:
а показывались бы только соответствующие запросу строки?

Цитата:
как писал выше, отрисовываем таблицу и применяем только код

Что тут не правильно? —

Код:
<style type="text/css">
#table,
#table td {
  border: 1px solid black;
}
</style>
 
<script src="jquery-3.3.1.js"></script>
<script src="data.js"></script>
<script>
$(function() {
 
 
$('#search').on('keyup', function() {
  var val = $(this).val(), t = $('#table');
  try {
     var regex = new RegExp(val, 'i');
     $('tr', t).each(function() {
        var row = $(this), hide = true;
        $('td', row).each(function() {
           if ($(this).text().match(regex))
              hide = false;
        });
        if (hide) row.hide();
        else row.show();
     });
  }
  catch(err) {    
  }
});
 
 
});
</script>
</head>
<body>
 
<div><input type='text' id='search'></div>
<table id='table'></table>

 
Добавлено:
Правильно понимаю, что по скорости это ничем не уступает скрипту Data Grid?
 
Добавлено:
Интересно, что даже если прописать ссылку в ячейку

Код:
 
col1: '<a href="http://forum.ru-board.com/topic.cgi?forum=31&topic=20486&start=20#lt">q1w1-col1</a>'
 

то поиск ведётся вне тегов, что и нужно)

Всего записей: 1362 | Зарегистр. 05-04-2010 | Отправлено: 03:57 09-10-2020 | Исправлено: D1D1D1D, 03:58 09-10-2020
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
D1D1D1D

Цитата:
Что тут не правильно?  

я же написал - рисуем таблицу сами
 

Цитата:
то поиск ведётся вне тегов

потому что поиск идет по text(), возвращающий текстовые данные без тегов.

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 04:34 09-10-2020 | Исправлено: Mavrikii, 04:35 09-10-2020
D1D1D1D

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Рисовать таблицу в виде HTML-кода? Но тогда она тоже вся видна на странице при запуске

Всего записей: 1362 | Зарегистр. 05-04-2010 | Отправлено: 04:48 09-10-2020
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
D1D1D1D
она будет вся видна и в случае пустой строки в фильтре или массового совпадения.
но нарисовать ее можно и с style='display:none' у <tr>.

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 04:50 09-10-2020 | Исправлено: Mavrikii, 04:50 09-10-2020
D1D1D1D

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
 
Понял, спасибо

Всего записей: 1362 | Зарегистр. 05-04-2010 | Отправлено: 05:17 09-10-2020
D1D1D1D

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вот был бы неплохой вариант, если бы базу можно было держать в виде JS-кода, а не HTML в той же странице — https://datatables.net/examples/api/regex.html

Всего записей: 1362 | Зарегистр. 05-04-2010 | Отправлено: 11:15 09-10-2020
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
D1D1D1D

Цитата:
если бы базу можно было держать в виде JS-кода

я вам в первоначальном коде показал, как вы можете нарисовать таблицу из своих js данных.
да и по вашей ссылке умеет брать данные из массива js
https://datatables.net/examples/data_sources/js_array.html

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 22:47 09-10-2020 | Исправлено: Mavrikii, 22:47 09-10-2020
D1D1D1D

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
 
Спасибо! Вот еще нашелся навороченный вариант. Я так понимаю, его скачать нельзя?

Всего записей: 1362 | Зарегистр. 05-04-2010 | Отправлено: 03:41 10-10-2020
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
D1D1D1D

Цитата:
Я так понимаю, его скачать нельзя?

это часть другого продукта.

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 04:09 10-10-2020
D1D1D1D

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
 
А есть возможность потестировать его, узнать, что такое?

Всего записей: 1362 | Зарегистр. 05-04-2010 | Отправлено: 04:25 10-10-2020
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
D1D1D1D

Цитата:
А есть возможность потестировать его,

нет смысла, это набор всего, требующее Windows Server и кучу остального
https://help.relativity.com/9.3/Content/Installing_and_Upgrading/Pre-installation/Pre-installation.htm
https://help.relativity.com/9.3/Content/Installing_and_Upgrading/Relativity_installation.htm

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 04:29 10-10-2020
D1D1D1D

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Выше я упоминал про функцию, позволяющую при вводе в форму поиска, нестандартные буквы с диакритикой заменять на обычные. Вот тут пример с этой функцией — https://jsfiddle.net/s2yo99de/, которую затрудняюсь перенести в следующий код — https://jsfiddle.net/hdma/sjwyo30e/6/  
 
Добавлено:
Вот тут писали, что это решение включено в состав официальных плагинов DataTables:
 
https://datatables.net/plug-ins/sorting/diacritics-sort
https://datatables.net/plug-ins/filtering/type-based/diacritics-neutralise

Всего записей: 1362 | Зарегистр. 05-04-2010 | Отправлено: 17:07 10-10-2020 | Исправлено: D1D1D1D, 17:11 10-10-2020
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
D1D1D1D

Цитата:
которую затрудняюсь перенести в следующий код

а пробовали вообще?
https://jsfiddle.net/5fu0t8gy/

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 20:55 10-10-2020
D1D1D1D

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
 
Спасибо! Я сдуру не код с официального сайта, а код из примера jsfiddle пытался вставить)
 
Как-то по Вашей подсказке я добавлял в тег INPUT это —

Код:
 onkeyup="fix(this)"

со ссылкой на функцию, с которой удаляются отдельные символы акцентов над буквами при вводе (в коде пример) —

Код:
 
function fix(obj) {
   obj.value = obj.value.replace('&#769;', ''); // a&#769;
   obj.value = obj.value.replace('&#772;', ''); // &#333;
};
 

То есть, это символы, которые после положения за буквой — ставят эту букву под ударение. Можно ли их как-то удалять при вводе (когда напимер их вставляют через буфер обмена), а так же в искомом тексте?
 
Какой по-Вашему скрипт лучше в отношении скорости — dataTables или dataGrid, который я приводил в первом сообщении в этой теме?
 
Добавлено:
Вижу, что эти символы переделались в буквенный код.

Всего записей: 1362 | Зарегистр. 05-04-2010 | Отправлено: 23:58 10-10-2020
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
D1D1D1D

Цитата:
Какой по-Вашему скрипт лучше в отношении скорости  

без понятия - тестируйте
 

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

obj.value = removeDiacritics(obj.value)

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 00:01 11-10-2020
D1D1D1D

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Пытаюсь наладить тестирование и для этой цели запустить вариант отсюда, так как в скрипте dataGrid тоже используется похожий формат базы:

Код:
{
    "name":    "Tiger Nixon",
    "position":   "System Architect",
    "salary":    "$3,120",
    "start_date": "2011/04/25",
    "office":    "Edinburgh",
    "extn":    "5421"
}

Но почему-то в итоге ссылка из скрипта "ajax": "data/objects.txt" не срабатывает и в окне висит "Loading...". В чем может быть дело?

Всего записей: 1362 | Зарегистр. 05-04-2010 | Отправлено: 21:53 11-10-2020
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3

Компьютерный форум Ru.Board » Интернет » Web-программирование » Мощный поиск по локальной базе через браузер


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru