Find value of current line of a <textarea> using javascript
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 everything after it to the next \n.
How can I do this?
Solution 1:
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);
Solution 2:
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.