2011-08-07 42 views
0

如何获取textarea中的当前选定文本(并对其进行修改)?获取当前选中的文本

我见过可以被监听的select事件,但我想知道是否有办法获取当前选中的文本。

此外,你需要使用什么技术才能在textarea中修改文本的特定部分?我认为有一些方法可以找出选择的位置在整个textarea的内容中的位置?

我想要做的就是选择并修改它,或者将它包装在特定的标签等中,就像您在堆栈交换文本编辑器中所做的那样。

回答

2

我已经发布了我认为在堆栈溢出所有浏览器(包括IE < 9)上执行此操作的权威函数。这里有一个例子:

IE's document.selection.createRange doesn't include leading or trailing blank lines

我也建议my jQuery plug-in这一点,其中包括这个功能和其他插入,删除,环绕或替换选定的文本,这听起来像你想要什么。它也是唯一的jQuery插件的textarea选择我知道这可以正常使用IE中的换行符工作。

1

在此页面中

http://www.netadmintools.com/art466.html

function display(txtarea) { 
    var sl = (txtarea.value) 
    .substring(txtarea.selectionStart, txtarea.selectionEnd);   
} 


<body onload="thisForm=document.frmKey;"> 
1

jQuery的字段选择插件.. Download Here例子在现场。

+0

fieldselection插件在IE <9中无法正常工作,并且换行符为空。 –

3

如果您只需要支持最新的浏览器,则可以使用selectionStartselectionEnd属性,这些属性显示textarea中选定文本的字符位置。您不能仅修改所选文字,而是更新了可使用setSelectionRange重新选择文字的值。

+0

感谢'setSelectionRange'提示 – Acorn

+1

为了更加具体地了解浏览器,'selectionStart'和'selectionEnd'在除IE <9之外的所有主要事物中都很好。另外,'selectionStart'和'selectionEnd'是可写的,所以您可以使用它们或'setSelectionRange()'。我不知道为什么冗余存在。 –