Jquery выделяет слова в редактируемом div

#jquery

#jquery

Вопрос:

У меня есть редактируемый div, и я хотел бы выделить (применить класс css) определенные слова, ПОКА пользователь все еще вводит текст в div.

Как бы я это сделал, используя Jquery?

Я пытался использовать div.html().replace() etc, но он заменяет его, а затем полностью возвращает курсор к началу.

Комментарии:

1. Где хранятся эти определенные слова? В массиве?

2. Хорошо, я работаю над решением…

Ответ №1:

Прямое изменение html для редактируемого div вызовет проблемы — при сохранении вы не сможете определить разницу между изменением, внесенным пользователем, и тем, которое было сделано скриптом выделения.

Однако вы можете попросить пользователя отредактировать элемент обычного текста, при этом делая вид, что он редактирует выделенный элемент. Добавьте второй div поверх вашего редактируемого div с указателем стиля-события: нет и прозрачным фоном. Пока оба элемента имеют одинаковый размер шрифта, вы будете редактировать версию обычного текста, но видеть цвета из выделенной версии.

Если размер шрифта фиксированный, вы можете пойти еще дальше и использовать textarea вместо редактируемого div. Я использовал этот подход, чтобы заставить редактор подсветки синтаксиса работать на iPad, который не поддерживает встроенное редактирование HTML.