首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >文本区域中的光标位置(字符索引,而不是x/y坐标)

文本区域中的光标位置(字符索引,而不是x/y坐标)
EN

Stack Overflow用户
提问于 2009-12-12 07:03:02
回答 6查看 87.9K关注 0票数 59

如何使用jQuery获取文本区域中插入符号的位置?我查找的是光标从文本开头的偏移量,而不是the (x, y) position

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-12-12 07:15:31

不是jQuery,而是Javascript...

代码语言:javascript
复制
var position = window.getSelection().getRangeAt(0).startOffset;
票数 11
EN

Stack Overflow用户

发布于 2009-12-16 04:02:08

修改了BojanG的解决方案以与jQuery协同工作。已在Chrome、FF和IE中测试。

代码语言:javascript
复制
(function ($, undefined) {
    $.fn.getCursorPosition = function() {
        var el = $(this).get(0);
        var pos = 0;
        if('selectionStart' in el) {
            pos = el.selectionStart;
        } else if('selection' in document) {
            el.focus();
            var Sel = document.selection.createRange();
            var SelLength = document.selection.createRange().text.length;
            Sel.moveStart('character', -el.value.length);
            pos = Sel.text.length - SelLength;
        }
        return pos;
    }
})(jQuery);

基本上,要在文本框上使用它,请执行以下操作:

代码语言:javascript
复制
$("#myTextBoxSelector").getCursorPosition();
票数 88
EN

Stack Overflow用户

发布于 2009-12-12 07:36:11

代码语言:javascript
复制
function caretPos(el)
{
    var pos = 0;
    // IE Support
    if (document.selection) 
    {
        el.focus ();
        var Sel = document.selection.createRange();
        var SelLength = document.selection.createRange().text.length;
        Sel.moveStart ('character', -el.value.length);
        pos = Sel.text.length - SelLength;
    }
    // Firefox support
    else if (el.selectionStart || el.selectionStart == '0')
        pos = el.selectionStart;

    return pos;

}
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1891444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档