使用TextRange获取输入框中光标的位置的代码

2016-02-19 10:27 7 1 收藏

有了下面这个使用TextRange获取输入框中光标的位置的代码教程,不懂使用TextRange获取输入框中光标的位置的代码的也能装懂了,赶紧get起来装逼一下吧!

【 tulaoshi.com - Web开发 】

TextRange是用来表现HTML元素中文字的对象,虽然我们平时不太常用这个对象,可是它却在IE4.0中就已提供了。不过TextRange提供的调用方法却都比较晦涩,那么我们能拿它做些什么呢? 

    TextRange的传统用途是对用户在Web页上用鼠标圈选的文字内容的操作,比如变化、删除、新增等。但其经典的用途却是,在Web页面中查找文字(这个比较简单)和获取输入框光标的位置。其中后者又有可以衍生出很多更有用的用途,比如:限制输入的MaskTextBox,其核心技术点就是获取输入框的光标位置,然后使用正则表达式判断输入内容。还有我后面会介绍的"使用方向键在输入框矩阵中自然的导航",核心技术点也是获取输入框中的光标位置。 

    获取输入框中的光标位置的整个代码其实很短,只是这些对象和方法不太常用而已。 
script language="javascript" 
function GetCursorPsn(txb) 

    var slct = document.selection; 
    var rng = slct.createRange(); 
    txb.select(); 
    rng.setEndPoint("StartToStart", slct.createRange()); 
    var psn = rng.text.length; 
    rng.collapse(false); 
    rng.select(); 
    return psn; 

/script 

    要彻底的弄清楚TextRange的具体用法,需要了解与其相关的一些内容,请参考MSDN。 



    这里说一下使用这个GetCursorPsn()方法后,会给输入框操作带来的副作用。对于输入框input type="text" onkeydown="GetCursorPsn(this)",它将不能再使用Shift+左右这两个方向键来选择文本;对于textarea onkeydown="GetCursorPsn(this)"/textarea,将不能再使用Shift+上下左右四个方向键来选择文本。因为代码在获取了当前光标到文本的startPoint后,调用rng.collapse(false);会改变文本筐内文本的EditPoint。不过这个副作用基本不会给我们使用文本框带来什么大的问题,所以基本不用太在意。

来源:https://www.tulaoshi.com/n/20160219/1594675.html

延伸阅读
标签: Web开发
Sample 1:普通情况,即默认情况,AutoComplete时打开的。见:IE5-工具-内容-自动完成选项。 forminput type = text name = Email/form Sample 2:有时候我们并不需要AutoComplete,例如需要用户自己再次输入密码而非自动完成。只要将所在表单元素的autocomplete属性设置为off即可。 forminput type = password name = Password autoco...
    在网上我们常常看见一些单的输入框部分并不是我们常见的矩形框,而是一条细线,很多朋友对此很感兴趣。其实要实现这样的效果并不困难,我们只要用一段简短的CSS代码控制好表单输入框的样式即可。   示例如下:   请输入您的用户名: 下面我们就来看看这段实现效果的css代...
标签: Web开发
//* *// [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]
标签: Web开发
这个例子主要学习两个参数onblur和onFocus.因为这两个参数以前很少遇到,baidu 一下明白了,onblur 是控件在失去焦点的时候触发的事件,而onFocus就是成为输入焦点的时候触发的事件,这两个参数都可以和className结合直接调用样式表类名 !DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose....

经验教程

955

收藏

68
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部