2010-05-20 16 views

Respuesta

108

Si sabe esto cuando se procesa la página, lo que parece que hace porque la base de datos tiene un valor, es mejor desactivarla cuando se represente en lugar de JavaScript. Para ello, sólo tiene que añadir el atributo readonly (o disabled, si quieres eliminarlo de la sumisión de la forma también) a la <input>, así:

<input type="text" disabled="disabled" /> 
//or... 
<input type="text" readonly="readonly" /> 
+14

por solo! No todas las menciones sobre eso. –

+63

No sé por qué esto recibe votos, no responde la pregunta. Esperábamos respuestas de JavaScript. – Sophie

+1

@Sophie es la forma más correcta para que el usuario lo haga en función de su situación, quizás un cambio de título esté en orden. –

6

obtener una referencia a su buzón de entrada de tu gusto (por ejemplo document.getElementById('mytextbox')) y establecer la readonly propiedad a true:

myInputBox.readonly = true; 

Como alternativa, simplemente puede añadir esta línea de propiedad (sin JavaScript necesario):

<input type="text" value="from db" readonly="readonly" /> 
+0

Si estás escribiendo HTML (en contraposición a XHTML) que sería 1 –

14

Si los datos se rellena a partir de la base de datos, podría considerar no usando una etiqueta <input> para mostrarla. Sin embargo, puede desactivar las cosas bien en la etiqueta:

<input type='text' value='${magic.database.value}' disabled> 

Si tiene que desactivar con Javascript después, se puede establecer el atributo "desactivado":

document.getElementById('theInput').disabled = true; 

La razón por la que no sugiero que muestran el valor como <input> es que, en mi experiencia, causa problemas de diseño. Si el texto es largo, entonces en un <input>, el usuario tendrá que intentar desplazar el texto, lo cual no es algo normal que la gente pueda adivinar. Si lo dejas caer en <span> o algo así, tienes más flexibilidad de estilo.

+2

Tenga en cuenta que la desactivación puede hacer que el texto sea casi ilegible en algunos navegadores. Es posible que esté mejor con el atributo de solo lectura, p.

+0

Sí, ese es un buen punto! – Pointy

+0

muchas gracias por su ayuda constructiva; me ahorra tiempo. – kawtousse

162
document.getElementById('foo').disabled = true; 

EDITAR

o

document.getElementById('foo').readOnly = true; 

Tenga en cuenta que debe haber readOnly en CamelCase para trabajar correctamente en Firefox (magia).

+3

Esto funcionó para mí. La versión de Jquery es $ ('input'). Prop ('disabled', true) –

+8

Esta debería ser la respuesta aceptada. – WebWanderer

+0

Llevo siete años de retraso en esto, pero ¿hay alguna diferencia semántica entre estos dos en 2017? – Jules

4

También puede por jQuery:

$('#foo').disabled = true; 
+1

Una mejor opción es probablemente [esto] (http://stackoverflow.com/a/1414366/1412022) – Nothing4You

+0

@ Nothing4You Estoy de acuerdo –

+0

@Chani Poz Estás llamando a js setter nativo en el objeto jquery resultará con el error. $ ('# foo') [0] .disabled = true o $ ('# foo'). get (0) .disabled = true hará el trabajo –

Cuestiones relacionadas