6

contenteditable divにこれがあります。#something を入力してからスペースを入力するたびに、その単語をその div で即座に太字にしたいと思います。

例えば

これが私のメッセージです。#笑。ハッシュタグを太字にしたい。

以下は私が持っているコードです

<div id="message" name="message" contenteditable="true"></div>

$('#message').keyup(function(e){

  var len = $(this).val().length;
  if ($(this).val().substring(length - 1, 1) == '#') {

  }

  //detect space
  if(e.keyCode == 32){

  }
});

私はjqueryを使用しています。どうすればそうすることができますか?

4

2 に答える 2

1

これがサンプルです。ただし、編集可能な div はお勧めできません。これを変更してみてください。テキストエリアの方がいいかもしれません...

http://jsfiddle.net/blackjim/h9dck/5/

function makeBold(match, p1, p2, p3, offset, string) {
    return p1+'<b>' + p2 + '</b>'+p3;
};

$('#message').keyup(function (e) {
    var $this = $(this);

    //detect space
    if (e.keyCode == 32) {
        var innerHtml = $this.html();
        innerHtml = innerHtml.replace(/(.*[\s|($nbsp;)])(#\w+)(.*)/g, makeBold);

        if(innerHtml !== $this.html()){
            $this.html(innerHtml)
                 .focus();
        }
    }
});
于 2013-06-18T19:59:49.843 に答える