javascript 光标定位

输入数字移动光标在文本框中
本文介绍了一个简单的JavaScript脚本,用于在文本框中根据输入的数字移动光标位置,包括处理非数字输入的错误提示。

<mce:script type="text/javascript"><!-- function moveCursor(){ var temp=this.txtNum.value; if(isNaN(temp)) { alert("请输入一个数字"); return; } var rng=this.txtTest.createTextRange(); /*1.创建一个TextRange对象,BODY、TEXT、TextArea、BUTTON等元素都支持这个方法。该方法返回一个TextRange对象。*/ rng.move("character",temp); /*2.move("Unit"[,count]) move()方法执行两个操作。首先,方法在前一个结束点的位置重叠当前文档,将这里作为一个插入点;下一步,它将插入点向前或向后移动任意个字符、单词或句子单位。 方法的第一个参数是字符串,它指定的单位有character(字符)、word(词)、sentence(段落)、textedit。 textedit值将插入点移动到整个文本范围的结束处(不需要参数)。如果指定为前三种单位,忽略参数时默认值为1,也可以指定一个整数值来指示单元数,正数代表向前移动,负数代表向后移动。 注意在move()方法执行后范围仍是重叠的。*/ rng.select(); /*select()方法选择当前文本范围内的文本,这里的显示光标也必须利用它来实现,因为所谓的"光标"可以理解为边界重合的范围*/ } // --></mce:script> </head> <body> <input type="text" name="txtTest" value="明·罗贯中《三国演义》第二十一回 操曰:“夫英雄者,胸怀大志,腹有良谋,有包藏宇宙之机,吞吐天地之志者也。" size="100" /><br /> 移动光标到第<input type="text" name="txtNum" size="5" />个位置 <input type="button" name="btnMove" value="确定" onclick="moveCursor()" /> </body>

// /*2光标放在最前面ie中OK,firefox中无效果*/
// function moveCursor(){
// var textTest=document.getElementsByName("txtTest");
// var r=txtTest.createTextRange();
// r.collapse();
// r.select();
// }


/*3光标放在最后面ie中OK,firefox中无效果*/
// function moveCursor(){
// var textTest=document.getElementsByName("txtTest");
// var r=txtTest.createTextRange();
// r.collapse(false);
// r.select();
// }


/*4选取input框中部分内容需要用到Range的moveStart或moveEnd方法,其详细的方法使用可以参考MSDN*/
//function sl(o,m,n){
// var rt=o.createTextRange();
// rt.collapse();
// rt.select();//光标移到最前
// var r=document.selection.createRange();
// r.collapse(false);
// r.moveStart("character",m);//从m位开始
// r.moveEnd("character",n);//选取n位
// r.select();
//}
<input name="a" value="12344563789" />
<input type="button" value="select" onclick="sl(a,2,4)"/>

/*5光标的移动和位置*/
function setpos(obj,n)
{
obj.focus();
var r=document.selection.createRange();
r.collapse(false);
r.move("character",n);
r.select();

}

function getpos(obj)//得到文本框内光标的位置
{
obj.focus();//光标位置不变
var r=document.selection.createRange();
r.collapse(false);
r.setEndPoint("StartToStart",obj.createTextRange());
alert(r.text.length);
}

例五
<input type="button" value="向前" onclick="setpos(a,-1)"/>
<input type="button" value="向后" onclick="setpos(a,1)"/>
<input type="button" value="当前光标的位置" onclick="getpos(a)" />

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值