Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript] Autorozszerzalne textarea
Skie
post
Post #1





Grupa: Zarejestrowani
Postów: 555
Pomógł: 84
Dołączył: 20.02.2008
Skąd: Małopolska

Ostrzeżenie: (0%)
-----


Witam,
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?
Go to the top of the page
+Quote Post
v1t4n
post
Post #2





Grupa: Zarejestrowani
Postów: 111
Pomógł: 16
Dołączył: 19.02.2005
Skąd: Dębica

Ostrzeżenie: (0%)
-----


W trakcie pisania do entera dodaj se sztywna spacje a jak ktos dopisze znak to ja wywali. Niestety nic lepszego nie przychodzi mi do glowy ^^
Go to the top of the page
+Quote Post
Skie
post
Post #3





Grupa: Zarejestrowani
Postów: 555
Pomógł: 84
Dołączył: 20.02.2008
Skąd: Małopolska

Ostrzeżenie: (0%)
-----


No ale wtedy bym musiał mnóstwo warunków robić co do tego.
Wiesz chodzi mi, że osobno na enter, osobno na backspace, osobno na wklejanie, wycinanie itp.,do tego obsługa w różnych przeglądarkach tego (często różnice wynoszą +- 1px ;-/) sprawia, że jest to praktycznie nie do zrealizowania, a jeśli nawet to bardzo dużo niepotrzebnie męczącego przeglądarkę kodu

Szukam jakiegoś sposobu uniwersalnego ;-)

Ten post edytował Skie 4.05.2009, 20:10:56
Go to the top of the page
+Quote Post
lord_t
post
Post #4





Grupa: Zarejestrowani
Postów: 603
Pomógł: 131
Dołączył: 24.07.2007
Skąd: Górny Śląsk

Ostrzeżenie: (0%)
-----


Przypuszczam, że skorzystałeś z onkeypress/onkeydown: spróbuj onkeyup
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 16:32