`

javascript中获取和设置文本框中光标的位置

 
阅读更多

 

//获取位置
function getLocation(elm) { 
    if(elm.createTextRange) { // IE              
        var range = document.selection.createRange();                
        range.setEndPoint('StartToStart', elm.createTextRange());                
        return range.text.length; 
    } else if(typeof elm.selectionStart == 'number') { // Firefox 
        return elm.selectionStart; 
    } 
} 

//设置位置
function setLocation(elm, n) { 
    if(n > elm.value.length) 
        n = elm.value.length; 
    if(elm.createTextRange) {   // IE 
        var textRange = elm.createTextRange(); 
        textRange.moveStart('character', n);             
        textRange.collapse();        
        textRange.select();      
    } else if(elm.setSelectionRange) { // Firefox 
        elm.setSelectionRange(n, n); 
        elm.focus(); 
    } 
} 

 其中几个函数的说明:

 

IE:

  TextRange.setEndPoint('StartToStart', elm.createTextRange()):将 TextRange 的起始位置调整到 elm.createTextRange() 的起始位置处。第二个参数必须是一个 TextRange,第一个参数必须为以下四个值:StartToStart、StartToEnd、EndToStart、EndToEnd,StartToStart 的意思就是将 TextRange 的起始位置设置为第二个参数的起始位置,同理可知 StartToEnd 的意思就是将 TextRange 的起始位置设置为第二个参数的终止位置,依此类推,EndToStart 和 EndToEnd 也就很好理解了。
  TextRange.moveStart('character', n): 将 TextRange 的起始位置后移到 n 个字符处,另外还有一个函数是 moveEnd('character', n),这是移动 TextRange 的终止位置,若要将终止位置前移,应使用 -n 而不是 n(假定 n 为正数)。

  TextRange.collapse():将文本插入点设置到 TextRange 当前起始位置处,若要设置到终止位置处,使用 TextRange.collapse(false)。实际上,设置插入点就是起点和终点设置到同一位置上,这大概也就是 collapse 这个名称的来由吧。所以,该语句也可换成 textRange.moveEnd('character', n - elm.value.length),只是看起来没那么简明而已。

  关于 TextRange 对象,查询一下 IE 的 DOM 手册便知。

 

Firefox:

  Firefox 下就简单得多了,Element.setSelectionRange(start, end):选取 Element 的文本中从起始位置 start 到终止位置 end 处的文本,同上,要设置插入点,将起始位置和终止位置设为同一个就可以了。


摘自 orain的专栏

分享到:
评论

相关推荐

    jQuery获取和设置文本框光标

    "jQuery获取和设置文本框光标"这个主题是关于如何利用jQuery来控制HTML输入元素(如文本框)中的光标位置以及选定文本的操作。这在创建富文本编辑器、自定义表单组件或实现某些特殊交互时非常有用。 首先,让我们...

    JS获取文本框焦点光标位置、选中起始位置、终止位置、选择内容

    在提供的HTML文件"JS获取文本框光标位置、选中起始位置、终止位置、选择内容.html"中,应该包含了一个示例,演示了如何使用这些方法来实时显示选中区域的信息。你可以打开这个文件,通过实践来更好地理解和应用这些...

    js 获取光标在文本框中的位置

    在JavaScript中,获取光标在文本框(input[type="text"]或textarea)中的位置是一项常见的需求,这在处理用户输入或者实现某些特定功能时非常有用。以下是一些关于如何使用JavaScript来实现这一功能的关键知识点: ...

    javascript获得光标所在的文本框(text textarea)中的位置.docx

    ### JavaScript 获取光标所在文本框(text/textarea)中的位置 在前端开发中,经常需要处理用户在文本框(如`<input type="text">`或`<textarea>`)内的输入行为,例如实现自动填充、实时校验等功能时,获取光标的...

    获取和设置文本框的光标位置

    "获取和设置文本框的光标位置"这个主题就是关于如何在JavaScript和jQuery中实现这一功能的。 首先,我们要理解什么是光标位置。在文本框中,光标是用户输入文字时闪烁的标记,表示当前文字将被输入的位置。而选中...

    JS获取文本框光标位置、选中起始位置、终止位置、选择内容

    1. **获取文本框光标位置**: 在JavaScript中,可以通过`element.selectionStart`属性来获取当前光标所在的位置。这个属性返回的是一个整数,表示用户在文本框中光标所在的字符索引。例如: ```javascript const ...

    javascript获得光标所在的文本框(text/textarea)中的位置

    标题和描述提到的`js 光标 文本框`,就是指通过JavaScript实现对文本输入光标的定位和获取。下面将详细介绍这个功能的实现方式以及相关知识点。 在非IE浏览器中,如Firefox、Chrome等,我们可以使用`selectionStart...

    js获取光标位置和设置文本框光标位置示例代码

    在JavaScript中,获取和设置文本框(input[type="text"])或文本域(textarea)的光标位置是一项常见的任务,特别是在实现用户交互功能时。在不同的浏览器中,处理光标位置的方法有所不同,主要分为IE浏览器和其他非...

    javascript设置文本框光标的方法实例小结

    在JavaScript编程中,处理用户界面交互时,有时我们需要对文本框(input[type="text"])或文本区域(textarea)的光标进行操作,例如设置光标位置或者获取当前光标位置。在本文中,我们将深入探讨如何使用JavaScript...

    js javascript 文本框一边输入一边后面跟个空格,并且光标在字符串后空格前,光标定位

    标题 "js javascript 文本框一边输入一边后面跟个空格,并且光标在字符串后空格前,光标定位" 描述的是一个JavaScript技术问题,涉及到实时文本输入时的自定义格式化以及光标位置控制。在这个场景下,用户在文本框中...

    在js(jquery)中获得文本框焦点和失去焦点的方法

    介绍两个方法和种是利用javascript onFocus onBlur来判断焦点和失去焦点,加一种是利用jquery $("p").blur(); 或$("p").blur(fn)来实现,有需要的朋友可以参考一下

    点击文本框,光标定位到首位置

    点击文本框,光标定位到首位置,Javascript实现的,效果不错。

    javascript 设置文本框中焦点的位置

    ### JavaScript 设置文本框中焦点的位置 在Web开发中,经常需要对用户界面进行细致的控制,比如设置文本框中光标或选中的文本位置。这种功能对于提高用户体验、实现特定的功能逻辑非常有用。本文将详细介绍如何使用...

    JavaScript自定义文本框光标

    在网页设计和开发中,自定义文本框光标可以帮助提供更加个性化的用户体验。JavaScript作为一种强大的前端脚本语言,可以用来实现自定义光标的交互效果。以下是基于提供的文档内容,对实现这一功能所需的知识点进行...

    JavaScript实现文本框提示

    - 获取输入框的位置信息(`offsetLeft` 和 `offsetTop`)。 - 设置提示框的HTML内容。 - 设置提示框的CSS样式(位置、显示状态等)。 ##### 2. 函数`outtips()` - 功能: - 将提示框的CSS属性`display`设置为`...

    jquery 确定光标位置

    在jQuery中,没有直接的方法来获取或设置光标位置,但我们可以利用JavaScript的原生方法。以下是一些关键的JavaScript函数,用于处理光标位置: 1. **获取光标位置**: 要获取光标在文本框中的位置,可以使用`...

    类似QQ和微博文本框插入表情和图片

    用户选择的表情会被添加到当前光标位置,这需要用到JavaScript操作DOM(文档对象模型)的方法,如`element.selectionStart`和`element.setSelectionRange`来获取和设置光标位置。 对于图片的插入,用户可能需要从...

    jQuery插件 文本框、文本域 光标处插入代码

    1. **光标位置的获取**:在JavaScript中,可以通过`element.selectionStart`和`element.selectionEnd`属性来获取文本框或文本域中的光标位置。 2. **插入内容**:可以使用`element.value.substring()`来获取选区...

    在textarea光标处插入文本

    - 通过`selectionStart`和`selectionEnd`属性获取光标所在位置。 - 将原始文本分为两部分:光标前的部分和光标后的部分。 - 插入新文本,并更新`textarea`的内容。 - 如果`textarea`滚动条之前被激活,则保存滚动条...

Global site tag (gtag.js) - Google Analytics