Возможный дубликат:
Узнайте номер строки (строки) курсора в текстовом поле
Я хочу узнать номер строки, в которой пользовательский курсор находится в элементе HTML textarea
.
Возможно ли использование javascript и jquery?
Возможный дубликат:
Узнайте номер строки (строки) курсора в текстовом поле
Я хочу узнать номер строки, в которой пользовательский курсор находится в элементе HTML textarea
.
Возможно ли использование javascript и jquery?
Это работает с нажатием кнопки. Украден из Определите номер строки (строки) курсора в текстовом поле
function getline()
{
var t = $("#t")[0];
alert(t.value.substr(0, t.selectionStart).split("\n").length);
}
HTML
<textarea rows="6" id="t">
there is no
love in the ghetto
so come here
and get it
</textarea>
<input type="button" onclick="getline()" value="get line" />
Вы можете использовать следующий подход
//Тест
$(function() {
$('#test').keyup(function() {
var pos = 0;
if (this.selectionStart) {
pos = this.selectionStart;
} else if (document.selection) {
this.focus();
var r = document.selection.createRange();
if (r == null) {
pos = 0;
} else {
var re = this.createTextRange(),
rc = re.duplicate();
re.moveToBookmark(r.getBookmark());
rc.setEndPoint('EndToStart', re);
pos = rc.text.length;
}
}
$('#c').html(this.value.substr(0, pos).split("\n").length);
});
});
Вот рабочий пример http://jsfiddle.net/S2yn3/1/
Это можно разделить на три этапа:
Я думаю, вы не хотите рассматривать обернутый текст и прокрученный контент. Предполагая, что вы используете функцию из этого answer, это будет выглядеть так:
var el = document.getElementById("inputarea"); // or something
var pos = getCaret(el),
before = el.value.substr(0, pos),
lines = before.split(/\r?\n/);
return lines.length;