如何将光标位置作为最后一行拆分textarea的值

时间:2016-06-17 14:59:25

标签: javascript jquery textarea

我想用\n分割textarea的值,并将光标所在的行作为数组中的最后一个值,例如:

1. fyg tgiyu rctvyu cuiby cutv cutrvyb crtvyb
2. rutyu rtcvyb ctrvybu ctrvybu rtcvy
3. rutiyu crtvyu crtvyb rtvyb
4. |
5. tgyho8uji vtybui
6. tvybui yivtubi

现在数字是textarea中的行,第4行是光标所在的行。所以我想分开忽略第5行和第6行的第4行作为最后一行。然后我会运行这样的代码:

lastLine = //the position of the cursor
if(lastLine == ""){
    console.log('empty');
} else {
    //get the value of the previous line before the lastLine
}

请问如何使用jQuery或JavaScript实现此目的

2 个答案:

答案 0 :(得分:0)

$('#theTextArea').prop("selectionStart");

$('#theTextArea').prop("selectionEnd");

上述属性为您提供现代浏览器上光标的位置。这个问题一直是linked here before though。对于较旧的浏览器,它可能会有问题。

但是在给定光标位置的情况下,您应该能够将子字符串抓取到光标索引。然后使用正则表达式将最后一行的内容输入到字符串的末尾。

答案 1 :(得分:0)

您可以通过jQuery substr()来实现这一目标。

从起点到光标所在的位置选择textarea值的子字符串,并使用换行符将其拆分。像这样;

value = $('textarea').val();
// to get the position of the cursor
index = $('textarea').prop('selectionstart');
// select all from the starting point to the cursor position ignoring line 5 and 6
str = value.substr(0, index);
// split the str with a line break
splt = str.split('\n');
// then finally to get your last line
lastLine = splt[splt.length - 1];