js 获取文本框位置

JavaScript012

js 获取文本框位置,第1张

关于JS获取与设置文本框、文本域光标位置

//获取光标所在文本框的位置

function getCaret(textbox) {

var control = document.activeElement

textbox.focus()

var rang = document.selection.createRange()

rang.setEndPoint(“StartToStart”,textbox.createTextRange())

control.focus()

alert(rang.text.length)

}

//获取光标所在文本域的位置

function getCaretForTextArea(ZysrID){

var txb = document.getElementById(ZysrID)//根据ID获得对象

var pos = 0//设置初始位置

txb.focus()//输入框获得焦点,这句也不能少,不然后面会出错,血的教训啦.

var s = txb.scrollTop//获得滚动条的位置

var r = document.selection.createRange()//创建文档选择对象

var t = txb.createTextRange()//创建输入框文本对象

t.collapse(true)//将光标移到头

t.select()//显示光标,这个不能少,不然的话,光标没有移到头.当时我不知道,搞了十几分钟

var j = document.selection.createRange()//为新的光标位置创建文档选择对象

r.setEndPoint(“StartToStart”,j)//在以前的文档选择对象和新的对象之间创建对象,妈的,不好解释,我表达能力不算太好.有兴趣自己去看msdn的资料

var str = r.text//获得对象的文本

var re = new RegExp(“[//n]“,”g”)//过滤掉换行符,不然你的文字会有问题,会比你的文字实际长度要长一些.搞死我了.我说我得到的数字怎么总比我的实际长度要长.

str = str.replace(re,”")//过滤

pos = str.length//获得长度.也就是光标的位置

alert(pos)

r.collapse(false)

r.select()//把光标恢复到以前的位置

txb.scrollTop = s//把滚动条恢复到以前的位置

}

//设置光标在文本框中的位置

function setCaret(id,pos){

var textbox = document.all(id)

var r = textbox.createTextRange()

r.collapse(true)

r.moveStart(‘character’,pos)

r.select()

}

//设置光标位置的调用函数

function readyforset(id){

var pos = document.getElementById(‘setpos’).value

setCaret(id,pos)

}

if(!-[1,])//如果是IE

{

var p=getCursortPosition(obj)

}

if(p>0)

{

setCaretPosition(obj,p)

}

<html>

<head>

<title>位置</title>

<script language="javascript" type="text/javascript">

function m(){

document.getElementById("area").innerHTML=event.clientX +" , "+event.clientY

}

function c(){

var objTop = getOffsetTop(document.getElementById("d"))//对象x位置

var objLeft = getOffsetLeft(document.getElementById("d"))//对象y位置

var mouseX = event.clientX+document.body.scrollLeft//鼠标x位置

var mouseY = event.clientY+document.body.scrollTop//鼠标y位置

//计算点击的相对位置

var objX = mouseX-objLeft

var objY = mouseY-objTop

clickObjPosition = objX + "," + objY

alert(clickObjPosition)

}

function getOffsetTop(obj){

var tmp = obj.offsetTop

var val = obj.offsetParent

while(val != null){

tmp += val.offsetTop

val = val.offsetParent

}

return tmp

}

function getOffsetLeft(obj){

var tmp = obj.offsetLeft

var val = obj.offsetParent

while(val != null){

tmp += val.offsetLeft

val = val.offsetParent

}

return tmp

}

</script>

</head>

<body style="margin:0px" onmousemove="m()">

<div style="padding:90pxborder:1px solid #cccfont-size:36pxwidth:800pxheight:800px"></div>

<div id="area"></div>

<div style="width:1400pxheight:300pxborder:1px solid redpadding-left:1200px">

<div id="d" style="width:200pxheight:200pxborder:1px solid greenpadding:10pxcursor:hand" onclick="c()">这里是图片,因为我用div边框1px,所以两个div会有2px的位置偏移,你可以自己调整</div>

</div>

</body>

</html>

现写的,你可以copy下来创建个html自己研究下,不难