如何找到textarea的当前行的值?
我知道我必须找到插入符号位置,然后找到它之前的所有内容\ n以及之后的所有内容到下一个\ n。
我该怎么做?
答案 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。