![]() |
![]() ![]() |
![]() |
![]()
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. |
|
|
![]()
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
|
|
|
![]()
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. |
|
|
![]()
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
-------------------- |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 19:02 |