Javascript:如何获得textarea中的line/col插入符号位置?

Javascript:如何获得textarea中的line/col插入符号位置?

问题描述:

我找不到解决方案。我试图假设\ n符号的数量与行数相同,但有时这种方法的工作不正确(例如,从剪贴板粘贴文本后) 我试过不同的jQuery插件,但仍然失败。 有什么想法?Javascript:如何获得textarea中的line/col插入符号位置?

的descision并非如此简单和requieres大量JavaScript代码。所以,最后我用CodeMirror项目由Marijn Haverbeke(https://github.com/marijnh/CodeMirror)

+1

在浏览器中有没有这么简单的API? WTF? – 2012-05-16 23:32:08

+0

现在链接已损坏 – Gary 2012-08-10 23:52:57

尝试使用此:

var pos = getCaretPos(document.formName.textareaName); 

function getCaretPos(obj) 
{ 
    obj.focus(); 

    if(obj.selectionStart) return obj.selectionStart;//Gecko 
    else if (document.selection)//IE 
    { 
    var sel = document.selection.createRange(); 
    var clone = sel.duplicate(); 
    sel.collapse(true); 
    clone.moveToElementText(obj); 
    clone.setEndPoint('EndToEnd', sel); 
    return clone.text.length; 
    } 

    return 0; 
} 
+1

以及它如何帮助一个数组通过拆分,以确定在哪个行和列插入符号是什么? – heximal 2011-02-28 10:43:33

为什么不只是这样做:

以文本内容最多只selectionStart然后使它在eol

p = $('#Form_config').val().substr(0, $('#Form_config')[0].selectionStart).split("\n"); 

// line is the number of lines 
line = p.length; 

// col is the length of the last line 
col = p[p.length-1].length;