pracuje obecnie nad auto-rozszerzalnymi textarea. Ma to działać na takiej zasadzie, że podczas pisania edytowana jest wysokość pola textarea. Na początku wynosi ona 13px (tyle by się mieściła na "widoku" jedna linijka), a max. chcę zrobić 39-52px (3-4 linijki, a potem blokowanie, by się już więcej nie rozszerzało). Zastanawiam się jak to zrobić uniwersalnie (tak, by textarea się edytowało nie tylko przy "enterze" ale także przy "backspace" [zmniejszanie wysokości jeśli konieczne], przy normalnym pisaniu, gdy się tekst nie mieści w jednej linijce, a także przy wklejaniu, wycinaniu).
Wpadłem na pomysł że najlepszy sposób będzie taki: (ogólne założenie tylko)
Kod
obj.style.height = obj.scrollHeight + 'px';
Dzięki temu, nie musiałbym się bawić w obliczenia, sprawdzania kiedy zwęzić, kiedy rozszerzyć textarea, przewidywać różne zachowanie na różne klawisze itp.
Niestety takie rozwiązanie ma ten minus, że działa jakby z opóźnieniem.
Naciśnięcie klawisza -> funkcja w JS -> update DOMa
Tak, więc np. po przyciśnięciu 3 razy entera, mam tylko 2 dodatkowe linijki, a jak dopiszę cokolwiek, np literę 'a', to dopiero wtedy dochodzi 3-cia linia z poprzedniego entera.
Wydaje się to w sumie mało uciążliwe, ale np. przy wklejaniu/wycinaniu to dość duża różnica.
Ma ktoś jakiś pomysł jak to obejść, tak by było to robione na bieżąco? Albo inny pomysł działania tego rozszerzania?