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

 更新时间:2007年03月08日 00:00:00   作者:  
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。不过这个副作用基本不会给我们使用文本框带来什么大的问题,所以基本不用太在意。

相关文章

  • javascript forEach函数实现代码

    javascript forEach函数实现代码

    在Base2中找到一个叫forEach的函数,是我见过的最好的实现。挖出来分析一下。它能对各种普通对象,字符串,数组以及类数组进行遍历。如果原游览器的对象已实现此函数,它则调用原对象的函数。
    2010-01-01
  • JavaScript判断是否为数组的各种方法汇总

    JavaScript判断是否为数组的各种方法汇总

    如何判断一个对象或一个值是否是一个数组,在面试或工作中我们常常会遇到这个问题,既然出现频率高,想着还是做个整理,所以这篇文章主要给大家汇总介绍了关于JavaScript判断是否为数组的各种方法,需要的朋友可以参考下
    2021-08-08
  • li隔行换色改进版

    li隔行换色改进版

    隔行换色非表格版不过原理可以参考下面的代码,写的很不错
    2008-05-05
  • 让 JavaScript 轻松支持函数重载 (Part 2 - 实现)

    让 JavaScript 轻松支持函数重载 (Part 2 - 实现)

    在上一篇文章里,我们设计了一套能在JavaScript中描述函数重载的方法,这套方法依赖于一个叫做Overload的静态类,现在我们就来看看如何实现这个静态类。
    2009-08-08
  • Javascript----文件操作

    Javascript----文件操作

    Javascript----文件操作...
    2007-01-01
  • JS仿百度自动下拉框模糊匹配提示

    JS仿百度自动下拉框模糊匹配提示

    这篇文章主要介绍了JS仿百度自动下拉框模糊匹配提示 的相关资料,需要的朋友可以参考下
    2016-07-07
  • JS获取指定月份的天数两种实现方法

    JS获取指定月份的天数两种实现方法

    这篇文章主要介绍了JS获取指定月份的天数两种实现方法,需要的朋友可以参考下
    2018-06-06
  • JS常用时间操作moment.js的使用方法

    JS常用时间操作moment.js的使用方法

    Moment.js是一个轻量级的JavaScript时间库,通常会对时间进行下面这几个操作:比如获取时间,设置时间,格式化时间,比较时间等等,本文就来介绍一下如何使用,感兴趣的可以了解下
    2023-09-09
  • 原生JS封装vue Tab切换效果

    原生JS封装vue Tab切换效果

    这篇文章主要为大家详细介绍了原生JS封装vue Tab切换效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-04-04
  • 关于webpack2和模块打包的新手指南(小结)

    关于webpack2和模块打包的新手指南(小结)

    本篇文章主要介绍了关于webpack2和模块打包的新手指南(小结),具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-08-08

最新评论