如何在光标位置或选中区插入数据
作者:闪吧 类型:原创 来源:闪吧
如何在光标位置或选中区插入数据
解决思路: 根据实际应用需要可以用paste命令或TextRange对象的方法。
具体步骤: 方法一:用paste命令执行的特性实现。paste命令的执行是在光标处粘贴文本,所以先用focus方法使光标移到对象内,再使用paste命令。
<script>
function AddText(str){
obj.focus()//使 id 为obj的对象成为当前焦点对象
document.execCommand("paste",0,str)//在文档光标处以paste粘贴str
}
</script>
<textarea name="obj" style="width:100%;height:300"></textarea>
<button onclick="AddText(’中文’)">AddText(’中文’)</button>
<button onclick="AddText(’English’)">AddText(’English’)
</button>
注意:如果多行文本框在使用focus方法前为blur,则focus后光标移到多行文本框的开始位置。
提示:execCommand方法的第一个参数为命令参数,第二个为是否显示用户界面的参数(布尔量),第三个参数所允许的值取决于第一个参数。
方法二:利用TextRange对象的特性和方法实现。
<script>
function getActiveText(){
//对象自定义属性currPos为文档中当前激活选中
//区被建立的TextRange对象的副本
obj.currPos = document.selection.createRange().duplicate()
}
function AddText(str) {
/*如果对象obj存在属性currPos对象,设置对象obj当前激活选中区被建立的TextRange对象的文本为参数str的值,实现在光标位置插入参数str的值或者用参数str的值来替换选中区文本*/
if (obj.currPos)obj.currPos.text=str
else obj.value+=str//直接把参数str的值添加到对象obj的值后面
}
</script>
<textarea id="obj" cols="50" rows="10" onfocus="getActiveText()" onchange="getActiveText()"></textarea>
<button onClick="AddText(’中文’)"> AddText(’中文’)</button>
<button onClick="AddText(’English’)"> AddText(’English’)
</button>
注意:对象的currPos属性是TextRange对象的副本,所以具有TextRange对象的所有特性和方法。
特别提示
代码运行后,直接单击按钮,将在多行文本框中插入指定文本,如果没有激活过多行文本框,方法一的结果将是在多行文本框开始处插入指定文本,而方法二则是在末尾。方法一的代码简单易懂,但功能有限,利用方法二还可以添加很多功能,比如说可以在选区两端加上指定字符串,这个在论坛发帖时需要对所选择文本应用格式化的UBB代码时尤其有用。
特别说明
本例需要掌握的技巧主要是方法二中TextRange对象的text属性的应用。
selection 代表了当前激活选中区,即高亮文本块,和/或文档中用户可执行某些操作的其它元素。
createRange 从当前文本选中区中创建 TextRange 对象,或从控件选中区中创建 controlRange 集合。
duplicate 返回 TextRange 的副本。
text 设置或获取范围内包含的文本。
责任编辑:kissall 时间:2005年8月29日
- 最近更新
