Eu tentei algumas abordagens, mas nenhuma funcionou. Alguém sabe um truque bacana para contornar isso?
<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: Não funciona no chrome. Era apenas a largura da área de texto.
<?="\n"?>
como uma nova linha
o atributo placeholder, como<textarea placeholder="This is a line This is another one"></textarea>
. A resposta está abaixo.Respostas:
O que você pode fazer é adicionar o texto como
value
, o que respeita a quebra de linha\n
.Em seguida, você pode removê-lo
focus
e aplicá-lo novamente (se vazio)blur
. Algo assimExemplo: http://jsfiddle.net/airandfingers/pdXRx/247/
CSS não puro e não limpo, mas faz o truque.
fonte
if($(this).val() == 'This is...')
aofocus
manipulador; caso contrário, se você adicionar algum texto, perder o foco e clicar na área de texto novamente, seu texto desaparecerá.Você pode inserir uma nova entidade html de linha
dentro do atributo placeholder:<textarea name="foo" placeholder="hello you Second line Third line"></textarea>
Funciona em: Chrome 62, IE10, Firefox 60
Não funciona: Safari 11
https://jsfiddle.net/lu1s/bxkjLpag/2/
fonte
literalmente, sem produzir um caractere de espaço em branco. Veja developer.mozilla.org/en/HTML/HTML5/…Não pense que você pode fazer isso: http://www.w3.org/TR/html5/forms.html#the-placeholder-attribute
O conteúdo relevante (ênfase minha):
fonte
ATUALIZAÇÃO (jan de 2016): O belo e pequeno hack pode não funcionar mais em todos os navegadores, por isso tenho uma nova solução com um pouquinho de javascript abaixo.
Um bom pequeno corte
Não parece bom, mas você pode simplesmente colocar as novas linhas no html. Como isso:
Observe que cada linha está em uma nova linha (não está sendo quebrada) e cada recuo da 'tab' tem 4 espaços. Concedido que não é um método muito bom, mas parece funcionar:
http://jsfiddle.net/01taylop/HDfju/
resize: none;
no css para que o tamanho da área de texto seja fixo (consulte jsfiddle).Como alternativa Quando você deseja uma nova linha, pressione Enter duas vezes (para que haja uma linha vazia entre suas 'novas linhas'. Essa 'linha vazia' criada precisa ter guias / espaços suficientes que equivaleriam à largura da área de texto. Parece que não importa se você tem muitos, você só precisa o suficiente. Isso é tão sujo e provavelmente não é compatível com o navegador. Gostaria que houvesse uma maneira mais fácil!
Uma solução melhor
Confira o JSFiddle .
box-sizing
edisplay: block
na área de texto são importantes ou a div por trás dela não será do mesmo tamanho.resize: vertical
emin-height
a área de texto também são importantes - observe como o texto do espaço reservado será agrupado e a expansão da área de texto manterá o plano de fundo branco. No entanto, comentar aresize
propriedade causará problemas ao expandir a área de texto horizontalmente.HTML:
SCSS:
Javascript:
fonte
Que tal uma solução CSS: http://cssdeck.com/labs/07fwgrso
fonte
Salaamun Alekum
Funciona para o Google Chrome
Obrigado
fonte
Adicione apenas & # 10 para quebra de linha, sem necessidade de escrever CSS ou javascript.
fonte
Resposta antiga:
Não, você não pode fazer isso no atributo placeholder. Você não pode nem codificar html novas linhas como
em um espaço reservado.Nova resposta:
Navegadores modernos oferecem várias maneiras de fazer isso. Veja este JSFiddle:
http://jsfiddle.net/pdXRx/5/
fonte
Use
no lugar\n
disso mudará a linha.fonte
\n
?Tente o seguinte:
http://jsfiddle.net/vr79B/
fonte
Você não pode fazê-lo com HTML puro, mas este plugin jQuery permite: https://github.com/bradjasper/jQuery-Placeholder-Newlines
fonte
$('input, textarea').placeholder();
com este$('input[placeholder], textarea[placeholder]').placeholder();
Uma versão ligeiramente melhorada da resposta de Jason Gennaro (consulte os comentários do código):
fonte
Gostei do trabalho de Jason Gennaro e Denis Golomazov, mas queria algo que fosse mais útil globalmente. Modifiquei o conceito para que ele possa ser adicionado a qualquer página sem repercussão.
http://jsfiddle.net/pdXRx/297/
O javascript é muito simples
fonte
HTML
JS
fonte
A área de texto respeita o atributo de espaço em branco do espaço reservado. https://www.w3schools.com/cssref/pr_text_white-space.asp
Configurá-lo para pré-linha resolveu o problema para mim.
fonte
Modifiquei o violino de @Richard Bronosky dessa maneira .
É melhor abordagem usar o
data-*
atributo do que um atributo personalizado. Troquei<textarea placeholdernl>
para<textarea data-placeholder>
e alguns outros estilos também.editado
Aqui está a resposta original de Richard, que contém um trecho de código completo.
fonte
muito simples
valor representa a sequência original
fonte
Confira esta solução com espaço reservado personalizado.
Demonstração sobre violino .
fonte
Não gosto de ocultar o espaço reservado quando você focaliza a área de texto. Por isso, criei uma função construtora
Placeholder
que se parece exatamente com o espaço reservado interno e funciona também em outros navegadores que não o Google Chrome. É muito conveniente, porque você pode usar aPlaceholder
função quantas vezes quiser e ela nem precisa do jQuery.EDITAR:
Agora também lida com casos especiais, como inserir o espaço reservado corretamente.
fonte
Esse problema pode ser resolvido usando o seletor indicado pelo espaço reservado e os planos de fundo superimpostos, se sua implementação permitir:
https://codepen.io/franciscoaquino/pen/YzyBPYK
Suporte do seletor:
https://caniuse.com/#feat=css-placeholder-shown
fonte