java获取光标位置_js获取光标位置(转)

这篇博客介绍了一个JavaScript函数getPosition,用于获取文本域或输入框中光标的位置。此外,还提供了一个getValue函数,它利用光标位置进行文本插入操作。内容详细解释了在不同浏览器环境下获取光标位置的方法,并提供了示例代码。
摘要由CSDN通过智能技术生成

/**

* 获取光标所在的字符位置

* @param obj 要处理的控件, 支持文本域和输入框

* @author

hotleave

*/

/p>

Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

/>

js获取光标位置

/**

* 获取光标所在的字符位置

* @param obj 要处理的控件, 支持文本域和输入框

* @author hotleave

*/

function getPosition(obj){

//alert(obj.tagName);

var result = 0;

if(obj.selectionStart){ //非IE浏览器

result = obj.selectionStart

}else{ //IE

var rng;

if(obj.tagName == "TEXTAREA"){ //如果是文本域

rng = event.srcElement.createTextRange();

rng.moveToPoint(event.x,event.y);

}else{ //输入框

rng = document.selection.createRange();

}

rng.moveStart("character",-event.srcElement.value.length);

result = rng.text.length;

}

return result;

}

function getValue(obj){

var pos = getPosition(obj);

//alert(pos);

alert(obj.value.substr(0,pos)+" [这里是添加的内容]

"+obj.value.substr(pos,obj.value.length));

}

style="display:block">

Amethyst,

你好.

复制代码  另存代码  提示:您

可以先修改部分代码再运行

js获取光标位置

body,td{

font-family: verdana, arial, helvetica, sans-serif;

font-size: 12px;

}

var start=0;

var end=0;

function add(){

var textBox = document.getElementById("ta");

var pre = textBox.value.substr(0, start);

var post = textBox.value.substr(end);

textBox.value = pre +

document.getElementById("inputtext").value + post;

}

function savePos(textBox){

//如果是Firefox(1.5)的话,方法很简单

if(typeof(textBox.selectionStart) == "number"){

start = textBox.selectionStart;

end = textBox.selectionEnd;

}

//下面是IE(6.0)的方法,麻烦得很,还要计算上'"n'

else if(document.selection){

var range = document.selection.createRange();

if(range.parentElement().id == textBox.id){

// create a selection of the whole textarea

var range_all = document.body.createTextRange();

range_all.moveToElementText(textBox);

//两个range,一个是已经选择的text(range),一个是整个textarea(range_all)

//range_all.compareEndPoints()比较两个端点,如果range_all比range更往左(further to the

left),则 //返回小于0的值,则range_all往右移一点,直到两个range的start相同。

// calculate selection start point by moving beginning

of range_all to beginning of range

for (start=0;

range_all.compareEndPoints("StartToStart", range) < 0; start++)

range_all.moveStart('character', 1);

// get number of line breaks from textarea start to

selection start and add them to start

// 计算一下"n

for (var i = 0; i <= start; i ++){

if (textBox.value.charAt(i) == '"n')

start++;

}

// create a selection of the whole textarea

var range_all = document.body.createTextRange();

range_all.moveToElementText(textBox);

// calculate selection end point by moving beginning

of range_all to end of range

for (end = 0; range_all.compareEndPoints('StartToEnd',

range) < 0; end ++)

range_all.moveStart('character', 1);

// get number of line breaks from textarea start

to selection end and add them to end

for (var i = 0; i <= end; i ++){

if (textBox.value.charAt(i) == '"n')

end ++;

}

}

}

document.getElementById("start").value = start;

document.getElementById("end").value = end;

}

start:

size="3"/>

end:

size="3"/>

onKeyup="this.value=this.value.replace(/[",]/g,',');savePos(this);"

οnmοusedοwn="savePos(this)"

οnmοuseup="savePos(this)"

οnfοcus="savePos(this)"

rows="14" cols="50">

复制代码  另存代码  提示:您

可以先修改部分代码再运行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值