使用javascript / jquery在textarea中使用强标记包装突出显示的文本

时间:2011-05-11 10:19:27

标签: javascript jquery wysiwyg

我希望创建一个javascript / jquery函数来包含一个强文本中textarea的高亮文本 - 类似于WYSIWYG编辑器。

这是否可行,如果是这样,你可以指出我正确的方向。

修改

好的,所以这里有一个希望更清楚的描述我想要的东西......

我的页面上有一个文本框,我可以输入。

然后,我希望能够突出显示此文本的一部分,并将突出显示的部分包装在<strong>标记中

因此,如果文本框中包含单词one two three并且我突出显示单词“two”,我希望能够将该单词包装在强标记中 - 因此成为one <strong>two</strong> three

希望这更清楚......我知道有插件,但我不需要完整的WYSIWYG功能。

2 个答案:

答案 0 :(得分:4)

我的Rangy inputs(可怕的名字,我知道)jQuery插件可以做到这一点。

示例代码:

$("#foo").surroundSelectedText("<strong>", "</strong>");

jsFiddle:http://jsfiddle.net/aGJDa/

答案 1 :(得分:0)

我喜欢Rangy!经常使用它!但是我不想仅仅为这个小应用程序包含整个内容,所以我使用document.execCommand来包装所选文本,然后使用href(CreateLink execCommand的第三个参数)来查找元素,将其包装起来用我想要的,然后删除链接:

    document.execCommand('CreateLink', false, 'uniqueid');
    var sel = $('a[href="uniqueid"]');
    sel.wrap('<strong />')
    sel.contents().unwrap();

所有主流浏览器都支持document.execCommand,因此您应该以这种方式安全地进行黑客攻击。在我测试的浏览器中,浏览器本身会关闭并打开标签,所以如果你从一个html标签的中间选择到另一个的中间,它应该正确地嵌套标签。