Ich habe Geistertext in Textfeldern, der verschwindet, wenn Sie sich mit dem Platzhalterattribut von HTML5 auf sie konzentrieren:
<input type="text" name="email" placeholder="Enter email"/>
Ich möchte denselben Mechanismus verwenden, um mehrzeiligen Platzhaltertext in einem Textbereich zu haben, vielleicht so etwas:
<textarea name="story" placeholder="Enter story\n next line\n more"></textarea>
Aber diese \n
werden im Text angezeigt und verursachen keine Zeilenumbrüche ... Gibt es eine Möglichkeit, einen mehrzeiligen Platzhalter zu haben?
UPDATE : Die einzige Möglichkeit, dies zum Laufen zu bringen, war die Verwendung des jQuery Watermark-Plugins , das HTML im Platzhaltertext akzeptiert:
$('.textarea_class').watermark('Enter story<br/> * newline', {fallback: false});
html
textarea
forms
placeholder
beim.
quelle
quelle
white-space
, um sicherzustellen, dass er richtig eingestellt ist, z. B. Pre-Wrap
überall außer Safari.Antworten:
Für
<textarea>
s beschreibt die Spezifikation speziell, dass Wagenrückgaben + Zeilenumbrüche im Platzhalterattribut vom Browser als Zeilenumbrüche gerendert werden MÜSSEN.Auch auf MDN reflektiert: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea#attr-placeholder
FWIW, wenn ich Chrome 63.0.3239.132 anprobiere, funktioniert es tatsächlich so, wie es sollte.
quelle
In den meisten Browsern (siehe Details unten) ermöglicht das Bearbeiten des Platzhalters in Javascript einen mehrzeiligen Platzhalter. Wie gesagt, es entspricht nicht der Spezifikation und Sie sollten nicht erwarten, dass es in Zukunft funktioniert (Bearbeiten: es funktioniert).
Dieses Beispiel ersetzt den Platzhalter aller mehrzeiligen Textbereiche.
JsFiddle- Snippet.
Erwartetes ErgebnisBasierend auf Kommentaren scheint es, dass einige Browser diesen Hack akzeptieren und andere nicht.
Dies sind die Ergebnisse von Tests, die ich durchgeführt habe (mit Browser- Shots und Browserstack ).
Zusammen mit diesen Statistiken bedeutet dies, dass es auf etwa 88,7% der derzeit (Oktober 2015) verwendeten Browser funktioniert .
Update : Heute funktioniert es in mindestens 94,4% der derzeit (Juli 2018) verwendeten Browser.
quelle
multiline
nicht seinmultiligne
WKWebView
. Anschließend wird dieser Browser unter IOS diesen Hack erst dann richtig rendernWKWebView
.Ich finde, wenn Sie viele Leerzeichen verwenden, wird der Browser es richtig umbrechen. Machen Sie sich keine Sorgen über die genaue Anzahl von Leerzeichen, werfen Sie einfach viel hinein, und der Browser sollte das erste Nicht-Leerzeichen in der nächsten Zeile ordnungsgemäß umbrechen.
quelle
Es gibt tatsächlich einen Hack, der es ermöglicht, mehrzeilige Platzhalter in Webkit-Browsern hinzuzufügen. Chrome funktionierte früher, wurde jedoch in neueren Versionen entfernt:
Fügen Sie zunächst wie gewohnt die erste Zeile Ihres Platzhalters zum HTML5 hinzu
Fügen Sie dann den Rest der Zeile per CSS hinzu:
Wenn Sie Ihre Zeilen an einem Ort behalten möchten, können Sie Folgendes versuchen. Der Nachteil dabei ist, dass andere Browser als Chrome, Safari, Webkit usw. zeige nicht einmal die erste Zeile:
Fügen Sie dann den Rest der Zeile per CSS hinzu:
Demo Geige
Es wäre sehr großartig, wenn so eine ähnliche Demo auf Firefox funktionieren könnte.
quelle
Wenn Sie AngularJS verwenden, können Sie einfach Klammern verwenden, um alles zu platzieren, was Sie möchten: Hier ist eine Geige.
quelle
Nach MDN ,
Dies bedeutet, dass wenn Sie nur zu einer neuen Zeile springen, diese korrekt gerendert werden sollte. Dh
sollte so rendern:
quelle
Die HTML5-Spezifikation lehnt neue Zeilen im Platzhalterfeld ausdrücklich ab. Versionen von Webkit / werden / neue Zeilen einfügen, wenn Zeilenvorschübe im Platzhalter angezeigt werden. Dies ist jedoch ein falsches Verhalten und sollte nicht als verlässlich angesehen werden.
Ich denke Absätze sind nicht kurz genug für w3;)
quelle
Reagieren:
Wenn Sie React verwenden, können Sie dies wie folgt tun:
quelle
Wenn Sie
textarea
eine statische Breite haben, können Sie eine Kombination aus nicht unterbrechendem Raum und automatischem Umbrechen des Textbereichs verwenden. Ersetzen Sie einfach die Leerzeichen für jede Zeile durch nbsp und stellen Sie sicher, dass zwei Nachbarzeilen nicht in eine passen. In der Praxisline length > cols/2
.Dies ist nicht der beste Weg, könnte aber die einzige browserübergreifende Lösung sein.
quelle
Sie können versuchen, CSS zu verwenden, es funktioniert für mich. Das Attribut
placeholder=" "
wird hier benötigt.quelle
in PHP mit Funktion chr (13):
quelle
Ich denke nicht, dass dies mit HTML / CSS allein möglich ist. Könnte mit JavaScript oder einer anderen Art von Hack möglich sein - zusätzliche Leerzeichen, um den Text in die nächste Zeile zu verschieben usw.
quelle
Bootstrap + contenteditable + mehrzeiliger Platzhalter
Demo: https://jsfiddle.net/39mptojs/4/
basierend auf der Antwort von @cyrbil und @daniel
Verwenden von Bootstrap, jQuery und https://github.com/gr2m/bootstrap-expandable-input , um Platzhalter in contenteditable zu aktivieren.
Bei Verwendung von Javascript "Platzhalter ersetzen" und Hinzufügen von "Leerzeichen: vor" zu CSS wird ein mehrzeiliger Platzhalter angezeigt.
Html:
Javascript:
CSS:
quelle
Die Wasserzeichenlösung im Originalbeitrag funktioniert hervorragend. Danke dafür. Falls jemand es braucht, hier ist eine Winkelanweisung dafür.
quelle