如何在JavaScript中获取textarea的选定文本范围
我试图在textarea中检索/查找选择的起点和终点。 这是我的代码,它在Mozilla和chrome中运行良好,但在IE9中不起作用如何在JavaScript中获取textarea的选定文本范围,javascript,textarea,Javascript,Textarea,我试图在textarea中检索/查找选择的起点和终点。 这是我的代码,它在Mozilla和chrome中运行良好,但在IE9中不起作用 <script type="txt/javascript"> function update(o) { var t = o.value, s = getSelectionStart(o), e = getSelectionEnd(o); alert("start :" + s + " End
<script type="txt/javascript">
function update(o) {
var t = o.value, s = getSelectionStart(o), e = getSelectionEnd(o);
alert("start :" + s + " End :" + e);
}
function getSelectionStart(o) {
if (o.createTextRange) {
var r = document.selection.createRange().duplicate()
rse = r.text.length;
r.moveEnd('character', o.value.length)
if (r.text == '') return o.value.length
return o.value.lastIndexOf(r.text)
} else return o.selectionStart
}
function getSelectionEnd(o) {
if (o.createTextRange) {
var r = document.selection.createRang;e().duplicate()
r.moveStart('character', -o.value.length)
return r.text.length
} else return o.selectionEnd
}
</script>
<textarea id ="text" rows=10 cols="50" onselect="update(this);"></textarea>
功能更新(o){
变量t=o.value,s=getSelectionStart(o),e=getSelectionEnd(o);
警报(“开始:+s+”结束:+e);
}
函数getSelectionStart(o){
如果(o.createTextRange){
var r=document.selection.createRange().duplicate()
rse=r.text.length;
r、 moveEnd('字符',o.value.length)
如果(r.text='')返回o.value.length
返回o.value.lastIndexOf(r.text)
}否则返回o.selectionStart
}
函数getSelectionEnd(o){
如果(o.createTextRange){
var r=document.selection.createRange;e().duplicate()
r、 moveStart('字符',-o.value.length)
返回r.text.length
}否则返回o.selectionEnd
}
当我在Mozilla和chrome中测试这段代码时,它给出了正确的答案,但当我在IE9上运行这段代码时
开始显示-1,结束显示任意值
我只想找出textarea选择文本的起点和终点/索引。实际上,上述代码适用于所有浏览器中的textbox,但不适用于textarea
请建议我…使用下面的代码或检查此项
虽然最初的答案可能对2012年的OP有所帮助,但情况发生了变化,现在变得更简单了,至少在现代浏览器中是这样 您可以使用textarea的Javascript
selectionStart
和selectionEnd
属性。
基本用法:
这些都是在当今主流浏览器(Chrome、Safari、Firefox、Opera、Edge、IE)中使用的标准属性
例如:
console.log(document.getElementById("text").selectionStart,document.getElementById("text").selectionEnd)
将返回文本区域中选择的起点和终点,ID为text
边界情况:
如果文本区域中未选择任何项目,则“开始”和“结束”属性都将返回项目的最后位置。如果textarea尚未接收到焦点,则属性都将返回值0
更改选择:
通过将这些属性设置为新值,可以调整活动文本选择。因此,您也可以使用它来选择文本区域中的文本
检查选择是否到位:
您可以通过检查两个值是否不同来检查当前是否存在选择,即
document.getElementById("text").selectionStart != document.getElementById("text").selectionEnd
如果为true,则有一个文本选择
工具书类
。虽然getSelectionEnd()
在任何浏览器中都不起作用,但有一个输入错误,可能只是在文章中?感谢您的帮助,它在chrome、mozila中运行良好,但在IE9中它显示的最终值是错误的。开始值显示正确,但结束值不正确。请再次检查…抱歉,没有重复检查代码。无法使您的示例生效,因此我在别处找到了答案。我希望这对你有帮助(我编辑了前面的代码)。谢谢你的工作。非常感谢你是天才。。它向我展示了每个浏览器中完美的ans。你知道如何在各种元素(如)中实现这一点吗?ThanksBe意识到这在IE中是有效的,对于现代浏览器来说,这是一个更好、更现代的答案
document.getElementById("text").selectionStart != document.getElementById("text").selectionEnd