在网页表单的<textarea>中,我们有时候需要将文本插入到光标所在的地方,或是替换掉选区内的文字。这时候,用普通的.value+="text"就无能为力了。下面这段测试代码可以解决这个问题,供大家参考:
function getActiveText() {obj.currPos = document.selection.createRange().duplicate()//对象自定义属性currPos为文档中当前激活选中区被建立的TextRange对象的副本}function AddText(str) {if (obj.currPos)//如果对象obj存在属性currPosobj.currPos.text=str//设置对象obj当前激活选中区被建立的TextRange对象的文本为参数str的值//实现在光标位置插入参数str的值或者用参数str的值来替换选中区文本else obj.value+=str//如果对象obj的自定义属性currPos不存在//直接把参数str的值添加到对象obj的值后面} </script><textarea id="obj" onfocus="getActiveText()" onchange="getActiveText()"></textarea><button onClick="AddText('中文')">AddText</button><button onClick="AddText('English')">AddText</button>