使用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 。