Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.10.2017, 16:30
Аватар для LADYX
Профессор
Отправить личное сообщение для LADYX Посмотреть профиль Найти все сообщения от LADYX
 
Регистрация: 19.02.2015
Сообщений: 217

Как можно выделить определенные символы в input?
Добрый день! Подскажите, пожалуйста, есть ли какой-то способ выделить отдельным стилем (цвет, например) определенные символы в поле input? С помощью :contains это, наверное, невозможно, он делает выборку, и выделяет сразу дивами или какими-то блоками. А мне нужно выделить именно определенные символы. Через return text.replace(new RegExp( тоже не вариант. Вот я и не знаю, как можно это сделать. Помогите, пожалуйста.
Ответить с цитированием
  #2 (permalink)  
Старый 07.10.2017, 20:22
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,726

https://jsfiddle.net/s69v7xvk/
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<div>
Lorem Ipsum - это текст-"рыба", часто используемый в печати и вэб-дизайне. Lorem Ipsum является стандартной "рыбой" для текстов на латинице с начала XVI века. В то время некий безымянный печатник создал большую коллекцию размеров и форм шрифтов, используя Lorem Ipsum для распечатки образцов. Lorem Ipsum не только <div>успешно пережил без заметных изменений пять веков, но и перешагнул в электронный дизайн. Его популяризации в новое время послужили публикация листов Letraset с образцами Lorem Ipsum в 60-х годах и, в более недавнее время,</div> программы электронной вёрстки типа Aldus PageMaker, в шаблонах которых используется Lorem Ipsum.
</div>
<script>
  $(function(){
    var find_string='е';
    $('*:contains("'+find_string+'")').filter(function(){
      var $t=$(this).clone();
      $t.find('>*').remove();

      if($t.text().indexOf(find_string)==-1)
        return false;

      $(this).html(this.innerHTML.replace(new RegExp('('+find_string+')','gm'),'<span style="color:red;">$1</span>'));
    });
  });
</script>

Работает, но мне не нравится алгоритм.
Возможно можно работать сразу с контентом document.body и избавится от нахождения прямого родителя текста, который будет изменен.
+ нужно усложнить регулярку, сейчас она может модифицировать и html код, что приведен к его инвалидности.

Последний раз редактировалось Nexus, 07.10.2017 в 20:25.
Ответить с цитированием
  #3 (permalink)  
Старый 07.10.2017, 20:44
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Nexus,
Сообщение от LADYX
выделить ... символы в поле input

я такого способа напрямую не знаю, только contenteditable вместо input
Ответить с цитированием
  #4 (permalink)  
Старый 07.10.2017, 22:12
Аватар для LADYX
Профессор
Отправить личное сообщение для LADYX Посмотреть профиль Найти все сообщения от LADYX
 
Регистрация: 19.02.2015
Сообщений: 217

Да, наверное я захотел изобрести что-то невозможное
Nexus,
рони,
Спасибо вам за ответы. Удачи вам!
Ответить с цитированием
  #5 (permalink)  
Старый 08.10.2017, 11:46
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,726

рони, таки да, вообще не к месту мой код.
Прошу прощения за крайнюю невнимательность.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как можно сделать такую карту Giorgi jQuery 1 18.08.2017 11:13
Как можно улучшить такой код? Reiter Общие вопросы Javascript 0 06.11.2012 16:19
Можно ли как то выделить текст в блоке при клике по блоку? someLogin Элементы интерфейса 1 10.10.2011 05:10
Как правильно очистить maxlength в input? Маэстро Events/DOM/Window 10 22.06.2011 18:14
Разным элементам input - разное форматирование. Как? eclipse (X)HTML/CSS 1 25.10.2007 13:55