J'ai du texte fantôme dans les champs de texte qui disparaissent lorsque vous vous concentrez sur eux à l'aide de l'attribut d'espace réservé de HTML5:
<input type="text" name="email" placeholder="Enter email"/>
Je veux utiliser le même mécanisme pour avoir un texte d'espace réservé multiligne dans une zone de texte, peut-être quelque chose comme ceci:
<textarea name="story" placeholder="Enter story\n next line\n more"></textarea>
Mais ceux \n
-ci apparaissent dans le texte et ne provoquent pas de sauts de ligne ... Existe-t-il un moyen d'avoir un espace réservé multiligne?
MISE À JOUR : La seule façon dont je l'ai fait fonctionner était d'utiliser le plugin jQuery Watermark , qui accepte le HTML dans le texte de l'espace réservé:
$('.textarea_class').watermark('Enter story<br/> * newline', {fallback: false});
white-space
pour vous assurer qu'elle est correctement définie, par exemple, pré-wrap
fonctionne partout sauf Safari.Réponses:
Pour
<textarea>
s, la spécification indique spécifiquement que les retours chariot + les sauts de ligne dans l'attribut d'espace réservé DOIVENT être rendus comme des sauts de ligne par le navigateur.Réflexion également sur MDN: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea#attr-placeholder
FWIW, quand j'essaye sur Chrome 63.0.3239.132, cela fonctionne en effet comme il se doit.
la source
Sur la plupart des navigateurs (voir les détails ci-dessous), la modification de l'espace réservé en javascript autorise l'espace réservé multiligne. Comme il a été dit, il n'est pas conforme à la spécification et vous ne devriez pas vous attendre à ce que cela fonctionne à l'avenir (modifier: cela fonctionne).
Cet exemple remplace tous les espaces réservés de la zone de texte multiligne.
Extrait JsFiddle .
Résultat attenduSur la base des commentaires, il semble que certains navigateurs acceptent ce hack et d'autres non.
Voici les résultats des tests que j'ai exécutés (avec des instantanés et des navigateurs )
Fusionné avec ces statistiques , cela signifie qu'il fonctionne sur environ 88,7% des navigateurs actuellement (octobre 2015) utilisés.
Mise à jour : Aujourd'hui, il fonctionne sur au moins 94,4% des navigateurs actuellement (juillet 2018) utilisés.
la source
multiline
pas êtremultiligne
WKWebView
. Par la suite, n'importe quel navigateur sur IOS ne rendra pas ce piratage correctement jusqu'à ce qu'il leWKWebView
fasse.Je trouve que si vous utilisez beaucoup d'espaces, le navigateur l'enveloppera correctement. Ne vous inquiétez pas d'utiliser un nombre exact d'espaces, ajoutez-en simplement beaucoup, et le navigateur devrait correctement envelopper le premier caractère non espace de la ligne suivante.
la source
Il existe actuellement un hack qui permet d'ajouter des espaces réservés multilignes dans les navigateurs Webkit, Chrome fonctionnait auparavant mais dans les versions plus récentes, ils l'ont supprimé:
Ajoutez d'abord la première ligne de votre espace réservé au html5 comme d'habitude
puis ajoutez le reste de la ligne par css:
Si vous souhaitez conserver vos lignes à un seul endroit, vous pouvez essayer ce qui suit. L'inconvénient est que d'autres navigateurs que Chrome, Safari, Webkit-etc. ne montre même pas la première ligne:
puis ajoutez le reste de la ligne par css:
Démo Fiddle
Ce serait très bien, si tel était le cas, une démo similaire pouvait fonctionner sur Firefox.
la source
Si vous utilisez AngularJS, vous pouvez simplement utiliser des accolades pour y placer ce que vous voulez: Voici un violon.
la source
Selon MDN ,
Cela signifie que si vous passez simplement à une nouvelle ligne, elle doit être rendue correctement. C'est à dire
devrait rendre comme ceci:
la source
La spécification html5 rejette expressément les nouvelles lignes dans le champ d'espace réservé. Les versions de Webkit / vont / insérer de nouvelles lignes lorsqu'elles sont présentées avec des sauts de ligne dans l'espace réservé, cependant, il s'agit d'un comportement incorrect et ne doit pas être invoqué.
Je suppose que les paragraphes ne sont pas assez brefs pour w3;)
la source
Réagir:
Si vous utilisez React, vous pouvez le faire comme suit:
la source
Si vous
textarea
avez une largeur statique, vous pouvez utiliser une combinaison d'espace insécable et d'habillage automatique de zone de texte. Remplacez simplement les espaces par nbsp pour chaque ligne et assurez-vous que deux lignes voisines ne peuvent pas tenir en une. En pratiqueline length > cols/2
.Ce n'est pas la meilleure solution, mais pourrait être la seule solution multi-navigateurs.
la source
Vous pouvez essayer d'utiliser CSS, cela fonctionne pour moi. L'attribut
placeholder=" "
est obligatoire ici.la source
en php avec la fonction chr (13):
la source
Je ne pense pas que ce soit possible avec html / css seul. Cela pourrait être possible en utilisant JavaScript ou un autre type de piratage - des espaces supplémentaires pour pousser le texte à la ligne suivante, etc.
la source
Bootstrap + contenteditable + espace réservé multiligne
Démo: https://jsfiddle.net/39mptojs/4/
basé sur les réponses @cyrbil et @daniel
Utilisation de Bootstrap, jQuery et https://github.com/gr2m/bootstrap-expandable-input pour activer l'espace réservé dans contenteditable.
En utilisant le javascript "placeholder replace" et en ajoutant "white-space: pre" au css, un espace réservé multiligne est affiché.
Html:
Javascript:
Css:
la source
La solution de filigrane dans le message d'origine fonctionne très bien. Merci pour cela. Au cas où quelqu'un en aurait besoin, voici une directive angulaire pour cela.
la source