Como faço para que uma entrada de texto não seja editável?


344

Então, eu tenho uma entrada de texto

<input type="text" value="3" class="field left">

Aqui está o meu CSS para ele

background:url("images/number-bg.png") no-repeat scroll 0 0 transparent;
border:0 none;
color:#FFFFFF;
height:17px;
margin:0 13px 0 0;
text-align:center;
width:17px; 

Existe uma configuração ou um truque para isso, eu estava pensando em fazer uma gravadora, mas que tal o estilo? Como os converto e existe um caminho melhor ou esse é o único caminho?

Respostas:


706
<input type="text" value="3" class="field left" readonly>

Não é necessário estilo.

Veja <input>no MDN https://developer.mozilla.org/en/docs/Web/HTML/Element/input#Attributes


4
ou readonly = "readonly" se você gosta de ser tudo XML-y, veja o exemplo de Stephan Muller abaixo :)
Algy Taylor

11
@Algy Taylor: Sim, isso estava na resposta original quando a pergunta original tinha uma tag [xhtml] rebelde que deixou todo mundo maluco sobre o que era válido para qual padrão: /
BoltClock

Existe alguma maneira de remover esse círculo vermelho que aparece quando você passa o mouse sobre textareacom readonlyatributo?
Chaudhry Waqas

11
@ Shafizadeh - Não, e isso é uma coisa boa. Seria difícil para os navegadores implementarem corretamente e confuso para as pessoas entenderem. não tente fazer um controle simples executar uma tarefa complexa. Divida sua entrada em partes, com cada parte simples (um controle editável, um elemento HTML não editável e outro controle editável).
Home

11
Verifique também este lado do servidor se você não quiser que o valor seja persistente. É fácil na ferramenta de desenvolvedor do navegador remover o atributo, que, por sua vez, torna o campo de entrada novamente editável.
Kurt Van den Branden


41

Você pode usar o readonlyatributo, se desejar que sua entrada seja apenas lida. E você pode usar o disabledatributo, se quiser que a entrada seja mostrada, mas totalmente desabilitada (mesmo linguagens de processamento como PHP não poderão lê-las).


2
Quando você envia um formulário para um arquivo php, ele não lê entradas desativadas. Pode ser o que ele quis dizer.
Carlos2W 29/03

3
o que realmente acontece é que as entradas desativadas NÃO SÃO MESMO enviadas quando você envia um formulário, não tem nada a ver com php, js ou qualquer outra coisa.
22816 vasilevich

28

Apenas para completar as respostas disponíveis:

Um elemento de entrada pode ser somente leitura ou desabilitado (nenhum deles é editável, mas há algumas diferenças: foco, ...)

Uma boa explicação pode ser encontrada aqui:
Qual é a diferença entre disabled = "disabled" e readonly = "readonly" para os campos de entrada do formulário HTML?

Como usar:

<input type="text" value="Example" disabled /> 
<input type="text" value="Example" readonly />

Existem também algumas soluções para fazê-lo através de CSS ou JavaScript, conforme explicado aqui .


5
Se você for usar />para fechar suas tags, também poderá expandir seus atributos para disabled="disabled"e readonly="readonly"também.
BoltClock


3

adicione o atributo somente leitura

<input type="text" value="3" class="field left" readonly="readonly" >

ou -

<input type="text" value="3" class="field left" readonly>

nenhum css necessário!


22
O que isso acrescenta à pergunta que minha resposta e a resposta de Stephan de mais de três anos antes ainda não o fizeram? Você até espelhou minha declaração sobre CSS não ser necessário.
BoltClock

2

você só precisa adicionar desativado no final

<input type="text" value="3" class="field left" disabled>

11
O valor não será enviado se você o definir como desativado. Pode ser o que você precisa, mas não foi o que foi solicitado. Como uma nota lateral, eu vim aqui precisamente porque a minha entrada "disabled" não estava se comportando como eu estava esperando
Balmipour

2

Adicionar readonly:

<input type="text" value="3" class="field left" readonly>

Se você deseja que o valor não seja enviado em um formulário, adicione o disabledatributo

<input type="text" value="3" class="field left" disabled>

Não há como usar CSS que sempre funcione para fazer isso.

Por quê? O CSS não pode "desativar" nada. Você ainda pode desativar a exibição ou a visibilidade e o uso, pointer-events: nonemas pointer-eventsnão funciona nas versões do IE lançadas antes do IE 11.


0

se você realmente deseja usar CSS , use a propriedade a seguir, que tornará o campo não editável.

pointer-events: none;

Oh oh oh. Isso não funciona em alguns navegadores.
Zixuan
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.