Получение номера строки в текстовой области [дубликат]

Если ваш класс является статичным, это означает, что вы не можете передавать его объект другим классам (так как нет экземпляра), так что все ваши классы будут напрямую использовать этот статический класс, что означает, что ваш код теперь тесно связан с классом.

Плотная связь делает ваш код менее многоразовым, хрупким и подверженным ошибкам. Вы хотите избежать статических классов, чтобы иметь возможность передать экземпляр класса другим классам.

И да, это только одна из многих других причин, о которых уже упоминалось.

23
задан Community 23 May 2017 в 12:09
поделиться

2 ответа

Это работает с нажатием кнопки. Украдено из Узнайте номер строки (строки) курсора в текстовой области

​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" />​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​
20
ответ дан Community 23 May 2017 в 12:09
поделиться

Вы можете использовать следующий подход

  1. Найти позицию каретки n (индекс).
  2. Найти подстроку от позиции 0 до индекса
  3. Поиск количества новых строк в подстроке, полученных на шаге 2.

// Test

$(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/

1
ответ дан Community 23 May 2017 в 12:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: