Я создаю область contentEditable на своем веб-сайте, где пользователи смогут вводить сообщения друг другу.
<div contentEditable="true" class="smartText">User types here...</div>
Дело в том, что внутри мы будем иметь интеллектуальный текст, а это означает, что если пользователь вводит @usersame
внутри этого div, @username
должен быть выделен синим цветом, если имя пользователя существует и зеленое, если оно не существует. И, конечно, все это должно происходить, когда пользователь набирает...
Я не знаю, с чего начать, прямо сейчас у меня есть это:
$("body").on("keyup",".smartText",function(){
var $this = $(this),
value = $this.html(),
regex = /[^>]#\S+[^ ]/gim;
value = value.replace(regex,"<span style='color:red'>$&</span>");
$this.html(value);
});
Но текст продолжает прыгать (а также позицию каретки) и не чувствует себя в правильном направлении. Я предполагаю, что он немного похож на JSFiddle, который кодирует цвета, как он его находит. Я в основном хочу того же, что и Twitter.
Вот JSFiddle, чтобы поиграть с: http://jsfiddle.net/denislexic/bhu9N/4/
Заранее благодарим за помощь.