How can I find the value of the current line of a textarea?
I know I have to find the caret position, but then find everything before it up to the last \\n and every
In line with nickf's answer, the following example (which uses jQuery) may be a bit faster because it uses (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);
}
Here it is on jFiddle.
A simple way would be to just loop:
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);