使用javascript </textarea>查找<textarea>的当前行的值

时间:2010-06-30 22:53:50

标签: javascript jquery textarea newline

如何找到textarea的当前行的值?

我知道我必须找到插入符号位置,然后找到它之前的所有内容\ n以及之后的所有内容到下一个\ n。

我该怎么做?

2 个答案:

答案 0 :(得分:6)

一种简单的方法就是循环:

var caretPos = 53, // however you get it
    start, end
;

for (start = caretPos; start >= 0 && myString[start] != "\n"; --start);
for (end = caretPos; end < myString.length && myString[end] != "\n"; ++end);

var line = myString.substring(start + 1, end - 1);

答案 1 :(得分:3)

根据nickf的回答,以下示例(使用jQuery)可能会更快一些,因为它使用(lastI|i)ndexOf

function current_line(textarea) {
  var $ta = $(textarea),
      pos = $ta.getSelection().start, // fieldselection jQuery plugin
      taval = $ta.val(),
      start = taval.lastIndexOf('\n', pos - 1) + 1,
      end = taval.indexOf('\n', pos);

  if (end == -1) {
      end = taval.length;
  }

  return taval.substr(start, end - start);
}

这是on jFiddle