Вам определенно придется перехватывать каждое нажатие клавиши, если вы хотите, чтобы она выполняла замену при вводе, но вам не нужно проверять пробелы.Следующее сработало, когда я тестировал его в IE:
$(function() {
$("#yourtextareaidhere").keyup(function(e) {
var updatedText = this.value.replace(
/(^|[^>])(hello)($|[^<])/gi, "$1<b>$2</b>$3");
if (updatedText != this.value)
this.value = updatedText;
});
});
По существу при каждом нажатии клавиши это заменяет строку, чтобы взять все экземпляры "hello", еще не окруженные ">" и "<" (включая где«Привет» в начале или в конце строки) и подставьте в <code>"<b>hello</b>".Если результат замены строки отличается от того, что было в поле (т. Е. Произошла некоторая подстановка), то новое значение записывается обратно в текстовое поле - я не просто записываю его обратно каждый раз, потому что при этом теряется курсорпозиция, которая раздражает пользователя, и мне лень придумывать лучший обходной путь, чем этот простой тест «если».(Я оправдываю это тем, что я предоставляю вам «стартовую позицию», а остальное оставляю вам.)
Этот подход учитывает тот факт, что пользователь, возможно, не набрал слово "Привет "за один раз, например, если они сделали опечатку и первоначально имели" Я говорю тебе привет ", затем вернулись и добавили" е ", тогда вы (предположительно) хотите заменить" Привет ", хотя это не такв конце.Также я делаю глобальную замену, так что если пользователь вставит в "привет привет привет", все они будут заменены.Решите сами, хотите ли вы замену без учета регистра.
Если есть и другие слова, которые вы хотите заменить, вы можете добавить их в одно и то же регулярное выражение, если им всем нужны только жирные теги, в противном случае, если каждоеспециальное слово имеет свое собственное обязательное форматирование, определяющее массив регулярных выражений поиска и замещающих строк и проходящее через них внутри функции.
Обратите внимание, что мои регулярные выражения немного устарели, поэтому я не удивлюсь, если естьлучший способ сделать то же самое, но я оставлю любые улучшения в качестве упражнения для читателя.