ユーザーが互いにメッセージを入力できるようになる、私の Web サイトで 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/
よろしくお願いします。