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?


--------------------
Wieloprocesowość i wielowątkowość w PHP, poznaj Kraken PHP!
Serwer HTTP i WebSocket w PHP | Promise/A+
Strona Domowa | Elradia MMORPG
FireFox: make the web better.
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 ^^


--------------------
Psik!! A masz!! ...chamie - Porucznik Borewicz
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


--------------------
Wieloprocesowość i wielowątkowość w PHP, poznaj Kraken PHP!
Serwer HTTP i WebSocket w PHP | Promise/A+
Strona Domowa | Elradia MMORPG
FireFox: make the web better.
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
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 19:02