修改代码,在键击时更改单词以在contenteditable而不是textarea中工作

时间:2011-10-25 03:10:35

标签: javascript jquery regex innerhtml contenteditable

如果在此处有此代码:

$(function() {
   $("#a").keyup(function(e) {
      var updatedText = this.value.replace(
      /(^|[^>])(hello)($|[^<])/gi, "$1<b>$2</b>$3");
      if (updatedText != this.value)
         this.value = updatedText;
   });
});

它的作用是取出与RegExp匹配的最后一个单词(在本例中为单词hello),并在其周围添加<b>个标签。这在Textarea中非常有用(演示在这里:http://jsbin.com/ibecel/2/edit 但我似乎无法将其修改为在一个令人满意的div中工作。我怎么需要修改它才能在一个可信的div中工作?我尝试将value对象更改为innerHTMLinnerText,但无济于事。它在输入单词后总是失去焦点,或者不会退出所做的新事物。请帮助

1 个答案:

答案 0 :(得分:0)

我制作了这个修改过的版本:http://jsbin.com/amazaq/2/edit - innerHTML就是你所需要的。

但是光标位置有问题。这是一个更难的问题 - 看看Set cursor position on contentEditable <div>