He intentado algunos enfoques pero ninguno funcionó. ¿Alguien sabe un truco ingenioso para evitar esto?
<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 -->
ACTUALIZACIÓN: No funciona en cromo. Era solo el ancho del área de texto.
<?="\n"?>
como una nueva línea
el atributo de marcador de posición, como<textarea placeholder="This is a line This is another one"></textarea>
. La respuesta está abajo.Respuestas:
Lo que podría hacer es agregar el texto como
value
, que respeta el salto de línea\n
.Luego, puede quitarlo
focus
y volver a aplicarlo (si está vacío)blur
. Algo como estoEjemplo: http://jsfiddle.net/airandfingers/pdXRx/247/
No es CSS puro y no está limpio, pero funciona.
fuente
if($(this).val() == 'This is...')
alfocus
controlador, de lo contrario, si agrega algo de texto, luego pierde el foco y luego hace clic en el área de texto nuevamente, su texto desaparece.Puede insertar una nueva entidad html de línea
dentro del atributo de marcador de posición:<textarea name="foo" placeholder="hello you Second line Third line"></textarea>
Funciona en: Chrome 62, IE10, Firefox 60
No funciona en: Safari 11
https://jsfiddle.net/lu1s/bxkjLpag/2/
fuente
literalmente, sin producir un carácter de espacio en blanco. Ver developer.mozilla.org/en/HTML/HTML5/…No piense que puede hacer eso: http://www.w3.org/TR/html5/forms.html#the-placeholder-attribute
El contenido relevante (énfasis mío):
fuente
ACTUALIZACIÓN (enero de 2016): El pequeño truco podría no funcionar en todos los navegadores, así que tengo una nueva solución con un poco de JavaScript a continuación.
Un pequeño truco agradable
No se siente bien, pero puedes poner las nuevas líneas en el html. Me gusta esto:
Observe que cada línea está en una nueva línea (no se está ajustando) y cada sangría de 'tabulación' tiene 4 espacios. De acuerdo, no es un método muy bueno, pero parece funcionar:
http://jsfiddle.net/01taylop/HDfju/
resize: none;
en el CSS para que el tamaño del área de texto sea fijo (Ver jsfiddle).Alternativamente, cuando desee una nueva línea, presione Intro dos veces (Por lo tanto, hay una línea vacía entre sus 'nuevas líneas'. Esta 'línea vacía' creada debe tener suficientes pestañas / espacios que equivalen al ancho de su área de texto. Parece que no importa si tienes demasiados, solo necesitas lo suficiente. Sin embargo, esto es muy sucio y probablemente no sea compatible con el navegador. ¡Ojalá hubiera una manera más fácil!
Una mejor solución
Mira el JSFiddle .
box-sizing
ydisplay: block
en el área de texto son importantes o el div detrás de él no será del mismo tamaño.resize: vertical
y unamin-height
en el área de texto también son importantes: observe cómo el texto del marcador de posición se ajustará y expandir el área de texto mantendrá el fondo blanco. Sin embargo, comentar laresize
propiedad causará problemas al expandir el área de texto horizontalmente.HTML:
SCSS:
Javascript:
fuente
¿Qué tal una solución CSS: http://cssdeck.com/labs/07fwgrso
fuente
Salaamun Alekum
Funciona para Google Chrome
Gracias
fuente
Agregue solo & # 10 para romper la línea, no es necesario escribir CSS ni JavaScript.
fuente
Vieja respuesta:
No, no puedes hacer eso en el atributo de marcador de posición. Ni siquiera puede codificar html nuevas líneas como
en un marcador de posición.Nueva respuesta:
Los navegadores modernos le ofrecen varias formas de hacerlo. Ver este JSFiddle:
http://jsfiddle.net/pdXRx/5/
fuente
El uso
en lugar de\n
esto cambiará la línea.fuente
\n
?Prueba esto:
http://jsfiddle.net/vr79B/
fuente
No puede hacerlo con HTML puro, pero este complemento jQuery le permitirá: https://github.com/bradjasper/jQuery-Placeholder-Newlines
fuente
$('input, textarea').placeholder();
con esto$('input[placeholder], textarea[placeholder]').placeholder();
Una versión ligeramente mejorada de la respuesta de Jason Gennaro (ver comentarios de código):
fuente
Me gustó el trabajo de Jason Gennaro y Denis Golomazov, pero quería algo que fuera más útil a nivel mundial. He modificado el concepto para que pueda agregarse a cualquier página sin repercusiones.
http://jsfiddle.net/pdXRx/297/
El javascript es muy simple
fuente
HTML
JS
fuente
Textarea respeta el atributo de espacio en blanco para el marcador de posición. https://www.w3schools.com/cssref/pr_text_white-space.asp
Establecerlo en la línea previa me resolvió el problema.
fuente
Modifiqué el violín de @Richard Bronosky de esta manera .
Es mejor utilizar el
data-*
atributo en lugar de un atributo personalizado. He sustituido<textarea placeholdernl>
a<textarea data-placeholder>
y algunos otros estilos también.editado
Aquí está la respuesta original de Richard que contiene un fragmento de código completo.
fuente
muy simple
valor representa la cadena original
fuente
Echa un vistazo a esta solución con marcador de posición personalizado.
Demo en el violín .
fuente
No me gusta ocultar el marcador de posición cuando enfocas el área de texto. Así que hice una función de constructor
Placeholder
que se parece exactamente al marcador de posición incorporado y funciona también en otros navegadores que Google Chrome. Es muy conveniente porque puede usar laPlaceholder
función tantas veces como lo desee y ni siquiera necesita jQuery.EDITAR:
Ahora también maneja casos especiales, como insertar el marcador de posición, correctamente.
fuente
Este problema puede abordarse utilizando el selector que se muestra en el marcador de posición y los fondos superpuestos, si su implementación permite:
https://codepen.io/franciscoaquino/pen/YzyBPYK
Selector de soporte:
https://caniuse.com/#feat=css-placeholder-shown
fuente