Динамічно змінюється поле вводу тексту. Чи можливо таке?

Завдання:


Зробити поле вводу коментарів (textarea) на формі так, щоб його розмір (висота) змінювався відповідно до кількості (рядків) тексту.

Користувач може ввести пару слів в один рядок або вставити табличку висотою двадцять рядків з екселя - поле вводу має автоматично збільшитися/зменшитися.

Довжина рядків різна (форма гумова і залежить від розміру вікна переглядача), рядки можуть переноситися як по\r\n, так і просто, якщо не вміщуються за шириною.

У принципі, потрібна формула підрахунку кількості рядків тексту, щоб змінювати атрибут rows у textarea.

Javascript вітається. Якщо рішення можливе тільки засобами html/css, то ще краще.

Рішення:

Для IE геніальне рішення підказав kosiasik:

у стиль textarea прописати overflow:visible

Універсальне рішення підказав drJonnie:

у textarea вказується висота в пікселях і вішається подія на натискання будь-якої клавіші (в тому числі і миші). Ця подія щоразу порівнює scrollHeight і clientHeight, якщо перший більше, то оновлюється висота у textarea.

Це рішення я майже реалізував:

function adjustHeight(textarea){
    var dif = textarea.scrollHeight - textarea.clientHeight
    if (dif){
        if (isNaN(parseInt(textarea.style.height))){
            textarea.style.height = textarea.scrollHeight + ""px"
        }else{
            textarea.style.height = parseInt(textarea.style.height) + dif + ""px"
        }
    }
}

залишилося повісити його на події onFocus, onBlur, onKcePress тощо, за вибором

drJonnie навів своє рішення нижче в коментарях

lahmatiy навів рішення з використанням jQuery (приклад використання), але я не хотів підключати цілий framework заради однієї функції

Дякую всім учасникам обговорення.