J'ai essayé quelques approches mais aucune n'a fonctionné. Est-ce que quelqu'un connaît une astuce astucieuse pour contourner cela?
<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 -->
MISE À JOUR: cela ne fonctionne pas dans Chrome. C'était juste la largeur de la zone de texte.
<?="\n"?>
une nouvelle ligne
l'attribut d'espace réservé, comme<textarea placeholder="This is a line This is another one"></textarea>
. La réponse est ci-dessous.Réponses:
Ce que vous pouvez faire est d'ajouter le texte en tant que
value
, ce qui respecte le saut de ligne\n
.Ensuite, vous pouvez le retirer
focus
et le réappliquer (s'il est vide)blur
. Quelque chose comme çaExemple: http://jsfiddle.net/airandfingers/pdXRx/247/
Pas du CSS pur et pas propre mais fait l'affaire.
la source
if($(this).val() == 'This is...')
aufocus
gestionnaire, sinon si vous ajoutez du texte, puis perdez le focus, puis cliquez à nouveau sur la zone de texte, votre texte disparaît.Vous pouvez insérer une nouvelle entité html de ligne
à l'intérieur de l'attribut d'espace réservé:<textarea name="foo" placeholder="hello you Second line Third line"></textarea>
Fonctionne sur: Chrome 62, IE10, Firefox 60
Ne fonctionne pas sur: Safari 11
https://jsfiddle.net/lu1s/bxkjLpag/2/
la source
littéralement, sans produire de caractère d'espacement. Voir developer.mozilla.org/en/HTML/HTML5/...Ne pensez pas que vous êtes autorisé à faire cela: http://www.w3.org/TR/html5/forms.html#the-placeholder-attribute
Le contenu pertinent (c'est moi qui souligne):
la source
MISE À JOUR (janvier 2016): Le joli petit hack pourrait ne plus fonctionner sur tous les navigateurs, j'ai donc une nouvelle solution avec un tout petit peu de javascript ci-dessous.
Un joli petit hack
Cela ne fait pas du bien, mais vous pouvez simplement mettre les nouvelles lignes dans le html. Comme ça:
Notez que chaque ligne est sur une nouvelle ligne (non encapsulée) et chaque retrait de «tabulation» est de 4 espaces. Certes, ce n'est pas une très bonne méthode, mais cela semble fonctionner:
http://jsfiddle.net/01taylop/HDfju/
resize: none;
dans le css pour que la taille de la zone de texte soit fixe (voir jsfiddle).Alternativement, lorsque vous voulez une nouvelle ligne, appuyez deux fois sur retour (il y a donc une ligne vide entre vos 'nouvelles lignes'. Cette 'ligne vide' créée doit avoir suffisamment de tabulations / espaces correspondant à la largeur de votre zone de texte. Il semble que peu importe si vous en avez beaucoup trop, vous en avez juste besoin. C'est tellement sale et probablement pas compatible avec le navigateur. J'aurais aimé qu'il y ait un moyen plus simple!
Une meilleure solution
Découvrez le JSFiddle .
box-sizing
etdisplay: block
de la zone de texte sont importantes ou le div derrière celui-ci ne sera pas de la même taille.resize: vertical
et unmin-height
sur la zone de texte sont également importants - notez comment le texte de l'espace réservé sera enveloppé et l'agrandissement de la zone de texte conservera l'arrière-plan blanc. Cependant, commenter laresize
propriété entraînera des problèmes lors de l'expansion horizontale de la zone de texte.HTML:
SCSS:
Javascript:
la source
Que diriez-vous d'une solution CSS: http://cssdeck.com/labs/07fwgrso
la source
Salaamun Alekum
Fonctionne pour Google Chrome
Merci
la source
Ajoutez seulement & # 10 pour casser la ligne, pas besoin d'écrire du CSS ou du javascript.
la source
Ancienne réponse:
Non, vous ne pouvez pas faire cela dans l'attribut d'espace réservé. Vous ne pouvez même pas encoder html comme
dans un espace réservé.Nouvelle réponse:
Les navigateurs modernes vous offrent plusieurs façons de procéder. Voir ce JSFiddle:
http://jsfiddle.net/pdXRx/5/
la source
Utiliser
à la place de\n
cela changera la ligne.la source
\n
?Essaye ça:
http://jsfiddle.net/vr79B/
la source
Vous ne pouvez pas le faire avec du HTML pur, mais ce plugin jQuery vous permettra: https://github.com/bradjasper/jQuery-Placeholder-Newlines
la source
$('input, textarea').placeholder();
avec ceci$('input[placeholder], textarea[placeholder]').placeholder();
Une version légèrement améliorée de la réponse de Jason Gennaro (voir les commentaires du code):
la source
J'ai aimé le travail de Jason Gennaro et Denis Golomazov, mais je voulais quelque chose qui serait plus globalement utile. J'ai modifié le concept pour qu'il puisse être ajouté à n'importe quelle page sans répercussion.
http://jsfiddle.net/pdXRx/297/
Le javascript est très simple
la source
HTML
JS
la source
Textarea respecte l'attribut d'espace blanc pour l'espace réservé. https://www.w3schools.com/cssref/pr_text_white-space.asp
Le régler en pré-ligne a résolu le problème pour moi.
la source
J'ai modifié le violon de @Richard Bronosky comme ça .
Il est préférable d'utiliser un
data-*
attribut plutôt qu'un attribut personnalisé. J'ai remplacé<textarea placeholdernl>
to<textarea data-placeholder>
et quelques autres styles également.édité
Voici la réponse originale de Richard qui contient un extrait de code complet.
la source
très simple
valeur représente la chaîne d'origine
la source
Découvrez cette solution avec un espace réservé personnalisé.
Démo sur violon .
la source
Je n'aime pas cacher l'espace réservé lorsque vous concentrez la zone de texte. J'ai donc créé une fonction de constructeur
Placeholder
qui ressemble exactement à l'espace réservé intégré et qui fonctionne également dans d'autres navigateurs que Google Chrome. C'est très pratique car vous pouvez utiliser laPlaceholder
fonction aussi souvent que vous le souhaitez et elle n'a même pas besoin de jQuery.ÉDITER:
Il gère désormais également correctement les cas particuliers, comme l'insertion de l'espace réservé.
la source
Ce problème peut être résolu en utilisant le sélecteur affiché par espace réservé et les arrière-plans super-imposés, si votre implémentation le permet:
https://codepen.io/franciscoaquino/pen/YzyBPYK
Prise en charge du sélecteur:
https://caniuse.com/#feat=css-placeholder-shown
la source