Mam jQuery pobrać zawartość textarea i wstawić ją do li.
Chcę, aby wizualnie zachowało podziały linii.
Musi być na to naprawdę prosty sposób ...
javascript
jquery
line-breaks
gbhall
źródło
źródło
Odpowiedzi:
źródło
możesz po prostu zrobić:
źródło
Umieść to w swoim kodzie (najlepiej w ogólnej bibliotece funkcji js):
Stosowanie:
tworzenie funkcji prototypu łańcucha pozwala na użycie tego na dowolnym łańcuchu.
źródło
W duchu zmiany renderowania zamiast zmiany zawartości , następujący CSS sprawia, że każda nowa linia zachowuje się jak
<br>
:Dlaczego dwie zasady:
pre-line
dotyczy tylko nowych linii (dzięki za wskazówkę @KevinPauli). IE6-7 i inne stare przeglądarki wracają do bardziej ekstremalnej wersji,pre
która również zawieranowrap
i renderuje wiele spacji. Szczegóły na temat tych i innych ustawień (pre-wrap
) na mozilla i css-tricks (dzięki @Sablefoste).Chociaż generalnie jestem niechętny skłonności SO do odgadywania pytania, zamiast odpowiadania na nie, w tym przypadku zastąpienie nowych linii
<br>
znacznikami może zwiększyć podatność na atak iniekcyjny z nieumytymi danymi wejściowymi użytkownika. Przekraczasz jasnoczerwoną linię, ilekroć zauważysz, że zmieniasz.text()
połączenia, na.html()
które sugeruje dosłowne pytanie. (Dzięki @AlexS za podkreślenie tego punktu). Nawet jeśli wykluczysz w danym momencie zagrożenie bezpieczeństwa, przyszłe zmiany mogą je wprowadzić nieświadomie. Zamiast tego ten CSS umożliwia tworzenie twardych podziałów wierszy bez znaczników przy użyciu bezpieczniejszego.text()
.źródło
white-space:
opcje, takie jakpre-wrap
. Zobacz css-tricks.com/almanac/properties/w/whitespace.html()
do ustawienia treści, co z kolei pozwoliłoby użytkownikowi wstawić dowolny kod HTML, chyba że odfiltrujesz go wcześniej..html()
niebezpieczeństwa @AlexS, próbował włączyć.Rozwiązanie
Użyj tego kodu
źródło
Ta funkcja JavaScript rozważa, czy użyć wstawiania czy zamiany do obsługi zamiany.
(Wstaw lub zamień znaki końca wiersza HTML)
Demo - JSFiddle
źródło
Napisałem do tego małe rozszerzenie jQuery:
źródło
poprawić zaakceptowaną odpowiedź @Luca Filosofi,
jeśli to konieczne, zmiana początkowej klauzuli tego wyrażenia regularnego na
/([^>[\s]?\r\n]?)
będzie również uwzględniać przypadki, w których nowa linia pojawia się po tagu ORAZ pewną białą spację, zamiast tylko tagu, po którym bezpośrednio następuje nowa liniaźródło
Innym sposobem wstawiania tekstu z obszaru tekstowego do DOM z zachowaniem podziałów wierszy jest użycie właściwości Node.innerText, która reprezentuje wyrenderowaną zawartość tekstową węzła i jego potomków.
Jako metoda pobierająca aproksymuje tekst, który użytkownik uzyskałby, gdyby podświetlił zawartość elementu kursorem, a następnie skopiował do schowka.
Obiekt stał się standardem w 2016 roku i jest dobrze obsługiwany przez nowoczesne przeglądarki. Can I Use : 97% globalnego zasięgu, kiedy opublikowałem tę odpowiedź.
źródło