Я пытаюсь выделить несколько результатов поиска в текстовом поле - несколько текстовых областей - формы.Как выделить несколько результатов поиска во вводе нескольких текстовых полей
После долгих поисков и многих испытаний я нашел решение, пока я готовил этот вопрос для S.O. но прежде, чем я его представил. Я думал, что стоит записать здесь, чтобы сэкономить время для кого-то другого с той же проблемой. Надеюсь, это приемлемо для S.O. Если нет, модераторы, пожалуйста, удалите.
В приложении, над которым я работаю, пользователи вводят текст и хранятся в MySQL, где каждая запись соответствует форме. Пользователи могут напомнить любую запись для редактирования, и когда они это сделают, они будут снова представлены ранее введенные данные в текстовых областях для изменения. Все это работает.
Теперь я выполнил функцию поиска для поиска по всей таблице, и когда пользователь вызывает запись, я хочу представить ее в форме для редактирования, причем все и все поисковые запросы на выделенной странице - например. например:
Это упрощено, действительная форма больше, поэтому пользователь может не заметить другие образы на странице.
Я сделал это с подсветкой для первого вхождения строки удара, если она присутствует в форме, но проблема возникает, когда строка появляется несколько раз в одной текстовой области или в нескольких текстовых областях на такой же вид.
Я пробовал эти подходы:
setSelectionRange: Это только один, который работает даже на полпути, но выделяет только одна строка за форму. Это имеет смысл, потому что AFAIK у вас не может быть более одного элемента, выбранного в поле ввода или форме html, и в качестве пользовательского интерфейса для тех, кто ищет результаты поиска, это не очень удобно.
добавить стиль в соответствующих точках ввода текста:
<span style="background-color: yellow">ZZZZ</span>
Я не ожидал, чтобы это работало, так как это вход в текстовое поле, но я попробовать его, и он просто показывает HTML. (Для записи данные пользователя немедленно исчезают, они отправляются.)Вызовите поисковую систему браузера и передайте его поисковый запрос. Мне не удалось найти способ сделать это по трем пунктам: я не могу найти способ запускать Ctrl + f программно, ввести поисковый запрос в окно поиска браузера и программно запрограммировать поиск в браузере.
Johann Burkard's 'highlight' jQuery plugin. http://johannburkard.de/blog/programming/javascript/highlight-javascript-text-higlighting-jquery-plugin.html Это способно выделять несколько записей на странице, но не в текстовых областях, которые, насколько я вижу, игнорируются. Я считаю, что я настроил его и вывел его правильно, потому что я могу заставить его выделить несколько текстовых полей на странице. Он работает, добавляя
<span class="highlight">Search result</span>
.Этот http://frightanic.com/projects/jquery-highlight/ от fightanic дает результаты, аналогичные плану Burkard's.
Этот http://www.jquery.info/The-plugin-SearchHighlight от Renato нацелен на результаты поисковой системы, так что это не мой прецедент.
Этот http://jaspreetchahal.org/examples/jquery-onpage-text-highlighter-and-filter.html отфильтровывает пункты, которые не содержат соответствие строки, так что я не пробовал, но демо показывает, что он использует
<span style="background:yellow;color:#000000">Search result</span>
, чтобы выделить, как и другие, так что я сомневаюсь, что это будет работать на текстовых областях ,