Ich habe ein paar Ansätze ausprobiert, aber keiner hat funktioniert. Kennt jemand den raffinierten Trick, um das zu umgehen?
<textarea placeholder='This is a line \n this should be a new line'></textarea>
<textarea placeholder='This is a line
should this be a new line?'></textarea> <!-- this works in chrome apparently -->
UPDATE: Es funktioniert nicht in Chrom. Es war nur die Breite des Textbereichs.
Siehe: http://jsfiddle.net/pdXRx/
<?="\n"?>
als neue Zeile setzen
das Platzhalterattribut hinzu, z<textarea placeholder="This is a line This is another one"></textarea>
. Die Antwort ist unten.Antworten:
Sie können den Text als hinzufügen
value
, wobei der Zeilenumbruch berücksichtigt wird\n
.Dann können Sie es entfernen
focus
und wieder auftragen (falls leer)blur
. Etwas wie dasBeispiel: http://jsfiddle.net/airandfingers/pdXRx/247/
Nicht reines CSS und nicht sauber, aber macht den Trick.
quelle
if($(this).val() == 'This is...')
sie demfocus
Handler hinzufügen . Andernfalls, wenn Sie Text hinzufügen, dann den Fokus verlieren und erneut auf den Textbereich klicken, verschwindet Ihr Text.Sie können eine neue HTML-Zeilenentität
in das Platzhalterattribut einfügen :<textarea name="foo" placeholder="hello you Second line Third line"></textarea>
Funktioniert auf: Chrome 62, IE10, Firefox 60
Funktioniert nicht bei: Safari 11
https://jsfiddle.net/lu1s/bxkjLpag/2/
quelle
buchstäblich aus, ohne ein Leerzeichen zu erzeugen. Siehe developer.mozilla.org/en/HTML/HTML5/…Denken Sie nicht, dass Sie das dürfen: http://www.w3.org/TR/html5/forms.html#the-placeholder-attribute
Der relevante Inhalt (Schwerpunkt Mine):
quelle
UPDATE (Jan 2016): Der nette kleine Hack funktioniert möglicherweise nicht mehr in allen Browsern, daher habe ich unten eine neue Lösung mit ein wenig Javascript.
Ein schöner kleiner Hack
Es fühlt sich nicht gut an, aber Sie können einfach die neuen Zeilen in den HTML-Code einfügen. So was:
Beachten Sie, dass sich jede Zeile in einer neuen Zeile befindet (nicht umbrochen wird) und jeder Tabulator-Einzug 4 Leerzeichen enthält. Zugegeben, es ist keine sehr schöne Methode, aber es scheint zu funktionieren:
http://jsfiddle.net/01taylop/HDfju/
resize: none;
in der CSS zu haben, damit die Größe des Textbereichs festgelegt ist (siehe jsfiddle).Alternativ Wenn Sie eine neue Linie wollen, drücken die Eingabetaste zweimal (So gibt es eine leere Zeile zwischen ‚neuen Linien‘. Diese ‚leere Zeile‘ erstellt Bedürfnisse genug tabs / Räume aufweisen, die der Breite des Textbereich entsprechen würde. Es spielt keine Es scheint nicht wichtig zu sein, wenn Sie viel zu viele haben, Sie brauchen nur genug. Dies ist jedoch so schmutzig und wahrscheinlich nicht browserkonform. Ich wünschte, es gäbe einen einfacheren Weg!
Eine bessere Lösung
Schauen Sie sich die JSFiddle an .
box-sizing
unddisplay: block
-Eigenschaften im Textbereich sind wichtig, oder das dahinterliegende Div ist nicht gleich groß.resize: vertical
und einmin-height
Zeichen im Textbereich sind ebenfalls wichtig. Beachten Sie, wie der Platzhaltertext umbrochen wird und das Erweitern des Textbereichs den weißen Hintergrund beibehält. Das Auskommentieren derresize
Eigenschaft führt jedoch zu Problemen beim horizontalen Erweitern des Textbereichs.HTML:
SCSS:
Javascript:
quelle
Wie wäre es mit einer CSS-Lösung: http://cssdeck.com/labs/07fwgrso
quelle
Salaamun Alekum
Funktioniert für Google Chrome
Danke
quelle
Fügen Sie nur & # 10 hinzu, um die Linie zu brechen. Sie müssen kein CSS oder Javascript schreiben.
quelle
Alte Antwort:
Nein, das können Sie im Platzhalterattribut nicht tun. Sie können nicht einmal HTML-Zeilenumbrüche wie
in einem Platzhalter codieren .Neue Antwort:
Moderne Browser bieten Ihnen verschiedene Möglichkeiten, dies zu tun. Siehe diese JSFiddle:
http://jsfiddle.net/pdXRx/5/
quelle
Die Verwendung
anstelle\n
davon ändert die Linie.quelle
\n
?Versuche dies:
http://jsfiddle.net/vr79B/
quelle
Sie können es nicht mit reinem HTML machen, aber mit diesem jQuery-Plugin können Sie: https://github.com/bradjasper/jQuery-Placeholder-Newlines
quelle
$('input, textarea').placeholder();
mit diesem$('input[placeholder], textarea[placeholder]').placeholder();
Eine leicht verbesserte Version der Antwort von Jason Gennaro (siehe Codekommentare):
quelle
Ich mochte die Arbeit von Jason Gennaro und Denis Golomazov, aber ich wollte etwas, das global nützlicher wäre. Ich habe das Konzept so geändert, dass es ohne Auswirkungen zu jeder Seite hinzugefügt werden kann.
http://jsfiddle.net/pdXRx/297/
Das Javascript ist sehr einfach
quelle
HTML
JS
quelle
Textarea berücksichtigt das Leerzeichenattribut für den Platzhalter. https://www.w3schools.com/cssref/pr_text_white-space.asp
Das Voreinstellen hat das Problem für mich gelöst.
quelle
Ich habe @Richard Bronoskys Geige so modifiziert .
Es ist besser, ein
data-*
Attribut als ein benutzerdefiniertes Attribut zu verwenden. Ich<textarea placeholdernl>
habe auch<textarea data-placeholder>
einige andere Stile ersetzt.bearbeitet
Hier ist die ursprüngliche Antwort von Richard, die den vollständigen Code-Ausschnitt enthält.
quelle
sehr einfach
Wert repräsentiert die ursprüngliche Zeichenfolge
quelle
Testen Sie diese Lösung mit einem benutzerdefinierten Platzhalter.
Demo auf Geige .
quelle
Ich mag es nicht, den Platzhalter zu verstecken, wenn Sie den Textbereich fokussieren. Deshalb habe ich eine Konstruktorfunktion erstellt
Placeholder
, die genau wie der integrierte Platzhalter aussieht und auch in anderen Browsern als Google Chrome funktioniert. Dies ist sehr praktisch, da Sie diePlaceholder
Funktion so oft verwenden können, wie Sie möchten, und nicht einmal jQuery benötigen.BEARBEITEN:
Es behandelt jetzt auch Sonderfälle wie das korrekte Einfügen des Platzhalters.
quelle
Dieses Problem kann mithilfe des vom Platzhalter angezeigten Selektors und der überlagerten Hintergründe behoben werden, wenn Ihre Implementierung Folgendes zulässt:
https://codepen.io/franciscoaquino/pen/YzyBPYK
Auswahlunterstützung:
https://caniuse.com/#feat=css-placeholder-shown
quelle