Как сделать <s: textarea /> readonly подходящим для его содержимого

У меня есть текстовая область в моей форме:

<s:textarea key = "appInfo.collection" 
       required = "true" 
       readonly = "true"
       cssClass = "form-control" 
           rows = "8"/>

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

Поскольку я указал rows=8 иногда он показывает пустую область, если содержимое занимает только 2 строки, или полосу прокрутки, если содержимое превышает 8 строк.

Как я могу дать этим текстовым областям правильный размер, основанный на их содержании, без полос прокрутки?

1 ответ

Решение

Вы можете использовать ответ, указанный в моем комментарии.

Что касается вашего комментария

Мои текстовые области находятся в режиме чтения, и у меня нет функции keyup для них

Вам не нужно никаких keyup обработчик: поскольку он доступен только для чтения, сделайте это один раз после загрузки страницы:

<s:textarea id = "myTextarea"
           key = "appInfo.collection" 
      required = "true" 
      readonly = "true"
      cssClass = "form-control" 
          rows = "8"/>
function autoheight(a) {
    if (!$(a).prop('scrollTop')) {
        do {
            var b = $(a).prop('scrollHeight');
            var h = $(a).height();
            $(a).height(h - 5);
        }
        while (b && (b != $(a).prop('scrollHeight')));
    };
    $(a).height($(a).prop('scrollHeight') + 20);
}

$(function(){ 
    // call the function in document.ready 
    autoheight($("#myTextarea"));
});
Другие вопросы по тегам