项目中正好用到 做下笔记方便以后查找
ie获取光标的位置使用document.selection.createRange()
火狐下使用document.getElementById(id).selectionStart 和 document.getElementById(id).selectionEnd
假设我们要获得id为txt的Textarea元素里面光标所选择的内容
首先创建一个获得光标所选内容的函数(参数:火狐下需要Dom元素 select_field=document.getElementById(txt))
var word="";
function getFieldSelection(select_field) {
if
(document.selection) {//这里判断是否是ie浏览器
var sel =
document.selection.createRange();//document.selection.createRange() 根据当前文字选择返回
TextRange 对象,或根据控件选择返回 ControlRange 对象。配合 execCommand,在 HTML
编辑器中很有用,比如:文字加粗、斜体、复制、粘贴、创建超链接等
if (sel.text.length > 0) {// document.selection.createRange().text就是获取文本域里选中的一段文字,大于0判断是否有选中
word = sel.text;
}
}
else if
(select_field.selectionStart || select_field.selectionStart == ‘0‘) {//这里判断浏览器是否是火狐
var startP = select_field.selectionStart;//获得光标选中内容的开始位置
var endP = select_field.selectionEnd;//获得光标选中内容的结束位置
if (startP != endP) {//判断是否选中了
如果位置一样 说明没有选中
word =
select_field.value.substring(startP, endP);//用substring截取选中的内容
}
}
}
上述就可以拿到选中的内容了
接下来我们把选中的内容插入到另一个文本框中
$("#txtMoudler").click(function () {
var select_field
= $(this)[0];
var content =word;
if (content != "") {
if
(document.selection) {//ie6
var sel =
document.selection.createRange(); //获取ie光标位置
if (document.selection.type != "None") {
sel.text = content;
sel.select();//光标设置到添加内容的后面
}
}
else if (select_field.selectionStart ||
select_field.selectionStart == ‘0‘) {//这里判断浏览器是否是火狐
var start =
select_field.selectionStart; //获取光标焦点前坐标
var end = select_field.selectionEnd; //获取光标焦点后坐标
//重新写入文本框中的内容
select_field.value =
select_field.value.substring(0, start) + content +
select_field.value.substring(end, select_field.value.length);
var lengths = select_field.value.substring(0,
Number(start)).length + content.length;
select_field.setSelectionRange(lengths,
lengths);//光标设置到添加内容的后面
$(this).focus();
}
}
});