Javascript 获取文本区域中的行号

Javascript 获取文本区域中的行号,javascript,jquery,html,textarea,Javascript,Jquery,Html,Textarea,可能重复: 我想找出用户光标在HTMLtextarea元素中的行号 使用javascript和jquery可以做到这一点吗?您可以使用以下方法 n(索引) 查找从位置0到索引的子字符串 在步骤2中获得的子字符串中搜索新行数 //试验 $(function() { $('#test').keyup(function() { var pos = 0; if (this.selectionStart) { pos = this.sele

可能重复:

我想找出用户光标在HTML
textarea
元素中的行号


使用javascript和jquery可以做到这一点吗?

您可以使用以下方法

  • n(索引)
  • 查找从位置0到索引的子字符串
  • 在步骤2中获得的子字符串中搜索新行数
  • //试验

    $(function() {
        $('#test').keyup(function() {
            var pos = 0;
            if (this.selectionStart) {
                pos = this.selectionStart;
            } else if (document.selection) {
                this.focus();
    
                var r = document.selection.createRange();
                if (r == null) {
                    pos = 0;
                } else {
    
                    var re = this.createTextRange(),
                    rc = re.duplicate();
                    re.moveToBookmark(r.getBookmark());
                    rc.setEndPoint('EndToStart', re);
    
                    pos = rc.text.length;
                }
            }
            $('#c').html(this.value.substr(0, pos).split("\n").length);
        });
    });
    ​
    
    下面是一个工作示例
    这可以分为三个步骤:

    • /
    • 在插入符号前面画线,然后数一数

    我猜你不想考虑包装文本和滚动内容。假设您使用来自的函数,它将如下所示:

    var el = document.getElementById("inputarea"); // or something
    
    var pos = getCaret(el),
        before = el.value.substr(0, pos),
        lines = before.split(/\r?\n/);
    return lines.length;
    

    这适用于按钮单击。偷自

    HTML

    ​
    没有
    犹太人区的爱情
    来吧
    明白了吗
    ​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​
    
    在文本区域中定义行。它是否包含包文本或只想换行吗?我想在一行中设置15个字符限制,用户不能在5个LeSeNice问题中输入超过75个字符:)和书签;这并不能解释换行造成的换行。@RobW:我认为OP不需要它为我工作……它是helpfull@codingbiz:它太完美了…我只是复制并粘贴了它…它已经工作了…我在过去的一周里遇到了这个问题…但我现在发布了…谢谢你…@freelector庆祝你的幸运关于换行符?你是说换行符吗?是的,换行符是由换行引起的…除非你使用固定宽度的字体,否则很难检测到换行符是由换行引起的。
    ​function getline()
    {
        var t = $("#t")[0];
        alert(t.value.substr(0, t.selectionStart).split("\n").length);
    }​
    
    ​<textarea rows="6" id="t">
    there is no
    love in the ghetto
    so come here
    and get it
    </textarea>
    <input type="button" onclick="getline()" value="get line" />​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​