JQuery / JS получить высоту полосы прокрутки текстовой области - PullRequest
11 голосов
/ 12 мая 2011

У меня есть текстовая область с фиксированной высотой. Когда пользователь вводит текст в область текста, появляется полоса прокрутки после того, как пользователь набрал в ней какой-либо текст.

Как я могу получить высоту полосы прокрутки, используя jQuery или простой JavaScript? Я искал это часами, но ничего не смог найти. Я не могу просто вставить div и получить высоту полосы прокрутки через смещение div, потому что текстовой области не разрешено иметь дочерние элементы.

Пожалуйста, не давайте мне ссылку на jQuery-плагин, который выполняет эту работу. Я хочу чему-то научиться.

Ответы [ 3 ]

15 голосов
/ 12 мая 2011
textarea.scrollHeight

возвращает целое число (в пикселях)

1 голос
/ 11 июля 2016
$.each($("textarea"), function () {
    var scrollHeight = parseInt(this.scrollHeight);
    if ($("this").val() != "" && isNaN(scrollHeight) == false && scrollHeight > 0 && scrollHeight > $(this).height()) {
        console.log($(this).attr("id"));
        $(this).height(scrollHeight);
    }
});
0 голосов
/ 02 мая 2017

Обратите внимание, что при сравнении scrollHeight вы должны исключить верхний отступ и нижний отступ текстовой области.

Пример

var scrollHeight = $("#textarea_id")[0].scrollHeight;
var padding = 14; //upperpadding 7 and lower padding 7.

if($("#textarea_id")[0].height() < (scrollHeight - padding)) {
  $("#textarea_id")[0].height(scrollHeight - padding);
}
...