使用javascript查找的当前行的值

如何找到textarea当前行的值?

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

我怎样才能做到这一点?

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

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); 

根据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); } 

这是jFiddle 。