Mam tekst widmowy w polach tekstowych, który znika, gdy skupisz się na nich za pomocą atrybutu zastępczego HTML5:
<input type="text" name="email" placeholder="Enter email"/>
Chcę użyć tego samego mechanizmu, aby mieć wielowierszowy tekst zastępczy w obszarze tekstu, może coś takiego:
<textarea name="story" placeholder="Enter story\n next line\n more"></textarea>
Ale te \n
znaki pojawiają się w tekście i nie powodują nowych linii ... Czy istnieje sposób, aby mieć wielowierszowy symbol zastępczy?
AKTUALIZACJA : Jedynym sposobem, w jaki udało mi się to uruchomić, było użycie wtyczki jQuery Watermark , która akceptuje HTML w tekście zastępczym:
$('.textarea_class').watermark('Enter story<br/> * newline', {fallback: false});
white-space
aby upewnić się, że jest ustawiona poprawnie, np. pre-wrap
działa wszędzie oprócz Safari.Odpowiedzi:
W przypadku
<textarea>
s specyfikacja wyraźnie określa, że powrót karetki + podziały wierszy w atrybucie zastępczym MUSZĄ być renderowane przez przeglądarkę jako podziały wierszy.Odzwierciedlone również w MDN: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea#attr-placeholder
FWIW, kiedy próbuję na Chrome 63.0.3239.132, rzeczywiście działa tak, jak powinien.
źródło
W większości przeglądarek (zobacz szczegóły poniżej) edycja symbolu zastępczego w javascript pozwala na użycie wielowierszowego symbolu zastępczego. Jak już powiedziano, nie jest zgodny z specyfikacją i nie należy oczekiwać, że zadziała w przyszłości (edytuj: działa).
Ten przykład zastępuje wszystkie symbole zastępcze obszaru tekstu wielowierszowego.
JsFiddle snippet.
Spodziewany wynikNa podstawie komentarzy wydaje się, że niektóre przeglądarki akceptują ten hack, a inne nie.
To są wyniki testów, które przeprowadziłem (ze zrzutami przeglądarki i stosem przeglądarki )
W połączeniu z tymi statystykami oznacza to, że działa na około 88,7% obecnie (październik 2015) przeglądarek używanych.
Aktualizacja : Dziś działa na co najmniej 94,4% obecnie (lipiec 2018 r.) Używanych przeglądarek.
źródło
multiline
niemultiligne
WKWebView
. Następnie żadna przeglądarka na IOS nie wyrenderuje poprawnie tego hacka, dopóki tegoWKWebView
nie zrobi.Uważam, że jeśli wykorzystasz dużo spacji, przeglądarka odpowiednio ją zapakuje. Nie martw się o użycie dokładnej liczby spacji, po prostu wrzuć tam dużo, a przeglądarka powinna poprawnie zawinąć do pierwszego znaku innego niż spacja w następnej linii.
źródło
Rzeczywiście istnieje hack, który umożliwia dodawanie wielowierszowych symboli zastępczych w przeglądarkach Webkit, Chrome działał, ale w nowszych wersjach usunęli go:
Najpierw jak zwykle dodaj pierwszy wiersz swojego symbolu zastępczego do HTML5
następnie dodaj resztę linii przez css:
Jeśli chcesz zachować swoje linie w jednym miejscu, możesz spróbować następujących rozwiązań. Wadą tego jest to, że inne przeglądarki niż Chrome, Safari, Webkit itp. nawet nie pokazuj pierwszej linii:
następnie dodaj resztę linii przez css:
Demo Fiddle
Byłoby wspaniale, gdyby tak można było uzyskać podobne demo działające na Firefoksie.
źródło
Jeśli używasz AngularJS, możesz po prostu użyć nawiasów klamrowych, aby umieścić w nim wszystko, co chcesz: Oto skrzypce.
źródło
Według MDN ,
Oznacza to, że jeśli po prostu przeskoczysz do nowej linii, powinna zostać poprawnie wyrenderowana. To znaczy
powinien wyglądać następująco:
źródło
Specyfikacja HTML5 wyraźnie odrzuca nowe wiersze w polu zastępczym. Wersje Webkit / will / insert new lines, gdy są przedstawiane z wysuwami wiersza w symbolu zastępczym, jednak jest to nieprawidłowe zachowanie i nie należy na nim polegać.
Myślę, że akapity nie są wystarczająco krótkie dla w3;)
źródło
Reagować:
Jeśli używasz Reacta, możesz to zrobić w następujący sposób:
źródło
Jeśli
textarea
masz statyczną szerokość, możesz użyć kombinacji nierozdzielającej spacji i automatycznego zawijania obszaru tekstu. Po prostu zamień spacje na nbsp dla każdej linii i upewnij się, że dwie sąsiednie linie nie pasują do jednej. W praktyceline length > cols/2
.To nie jest najlepszy sposób, ale może to być jedyne rozwiązanie dla różnych przeglądarek.
źródło
Możesz spróbować użyć CSS, to działa dla mnie. Atrybut
placeholder=" "
jest tutaj wymagany.źródło
w php z funkcją chr (13):
źródło
Nie sądzę, żeby było to możliwe przy samym html / css. Może to być możliwe przy użyciu JavaScript lub innego rodzaju hackowania - dodatkowe spacje, aby przesunąć tekst do następnej linii itp.
źródło
Bootstrap + możliwość edycji treści + wielowierszowy symbol zastępczy
Demo: https://jsfiddle.net/39mptojs/4/
na podstawie odpowiedzi @cyrbil i @daniel
Korzystanie z Bootstrap, jQuery i https://github.com/gr2m/bootstrap-expandable-input aby włączyć symbol zastępczy w contenteditable.
Używając javascript „zastępczy symbol zastępczy” i dodając „odstępy: pre” do css, wyświetlany jest wielowierszowy symbol zastępczy.
HTML:
JavaScript:
CSS:
źródło
Rozwiązanie znaku wodnego w oryginalnym poście działa świetnie. Dzięki za to. Na wypadek, gdyby ktoś tego potrzebował, oto dyrektywa kątowa.
źródło