Chcę zapewnić zmianę rozmiaru textarea control dla użytkowników. Zrobiłem to i spojrzałem na kilka innych implementacji, ale nie mogę znaleźć takiego, który spełnia wszystkie moje wymagania. W szczególności chcę kontrolę że:Wyszukiwanie ostatecznego rozmiaru Textarea
- Pracuje w IE6, IE7, IE8 w Windows i Firefox 3 i 3.5 na Windows i OS X, gdy strona jest renderowane w normach tryb zgodny (czyli nie w trybie quirks).
- Nie zepsuł bufora cofania/cofaj stosu. Jest to szczególnie nieprzyjemny problem z IE - dodanie węzłów, usunięcie węzłów i niektórych innych operacji DOM spowoduje zresetowanie bufora wejściowego, co oznacza, że jeśli implementacja będzie opierała się na tych technikach, cofanie nie będzie zachowywać się tak, jak w standardowej kontroli obszaru tekstowego. Nie byłem w stanie znaleźć wiele informacji na temat tego błędu z wyjątkiem this note. Wdrożenia, takie jak jQuery Auto Growing Plugin, cierpią z powodu tego problemu - spróbuj cofnąć zmiany w IE i porównać, jak działa to w standardowym obszarze tekstowym. Dodałem example page demonstrujący ten problem do JSBin.
- Ma maksymalną wysokość, powyżej której kontrola nie może wzrosnąć.
- Zmniejsza się odpowiednio po usunięciu treści.
- Nie migocze ani nie działa dziwnie po naciśnięciu klawisza. na przykład jQuery Auto Growing Kontrolka Textarea zachowuje się dziwnie z, przynajmniej IE7, kiedy kontrola wzrosła poza początkowy rozmiar.
- Nie wymaga użycia przez kontrolkę czcionki o stałej szerokości/stałej szerokości.
Najbliżej widziałem czegoś, który działa podobnie jak to jest status pola Facebooka, który jest zaimplementowany jako zawartość edycji elementu div, ale mam pewne zastrzeżenia co do używania takiego elementu, ponieważ za pomocą div oznacza:
- Konieczne jest wyraźne zaznaczenie granicy, co oznacza, że moglibyśmy zakończyć ramką wyglądającą inaczej niż natywne pole tekstowe.
- Chcesz zsynchronizować zawartość z prawdziwym tekstem (prawdopodobnie w obu kierunkach?).
- Dodaje złożoności podczas umieszczania podpowiedzi i innych elementów w stosunku do położenia textarea.
- Podczas gdy to podejście działa w przypadku aktualizacji statusu na Facebooku, jak dobrze by działało w postaci zawierającej setki standardowych elementów wejściowych?
To, co przedstawiłem powyżej, przedstawia "ostateczną zmianę rozmiaru tekstu" - odnosząc się do tego, co uważam za problem z istniejącymi podejściami. Czy taka kontrola istnieje? Czy można napisać taką kontrolę?
"Jak dobrze by działało w postaci zawierającej setki standardowych elementów wejściowych?" Czy wiele z tych tekstowych tekstów byłoby używanych na tej samej stronie? – Tom
Potencjalnie tak. Rzecz z Facebookiem (lub nawet z Dokumentami Google) polega na tym, że naprawdę muszą zajmować się jednym elementem contentEditable na stronie, co jest oczywiście znacznie prostsze niż w przypadku 20+. –