He leído un poco sobre esto, pero parece que no puedo encontrar nada sólido sobre cómo los diferentes navegadores tratan las cosas.
He leído un poco sobre esto, pero parece que no puedo encontrar nada sólido sobre cómo los diferentes navegadores tratan las cosas.
Respuestas:
Un readonly
elemento simplemente no es editable, pero se envía cuando se envía el correspondiente form
. Un disabled
elemento no es editable y no se envía al enviar. Otra diferencia es que los readonly
elementos pueden enfocarse (y enfocarse cuando se "tabula" a través de un formulario) mientras que los disabled
elementos no.
Lea más sobre esto en este gran artículo o la definición de w3c . Para citar la parte importante:
Diferencias clave
El atributo deshabilitado
- Los valores para los elementos de formulario deshabilitados no se pasan al método del procesador. El W3C llama a esto un elemento exitoso (esto funciona de manera similar a las casillas de verificación de formularios que no están marcadas).
- Algunos navegadores pueden anular o proporcionar un estilo predeterminado para los elementos de formulario deshabilitados. (Gris o texto en relieve) Internet Explorer 5.5 es particularmente desagradable al respecto.
- Los elementos de formulario deshabilitados no reciben foco.
- Los elementos de formulario deshabilitados se omiten en la navegación con pestañas.
El atributo de solo lectura
- No todos los elementos de formulario tienen un atributo de solo lectura. Lo más notable, las
<SELECT>
,<OPTION>
y<BUTTON>
los elementos no tienen atributos de sólo lectura (aunque ambos tienen atributos de movilidad reducida)- Los navegadores no proporcionan comentarios visuales anulados por defecto de que el elemento del formulario es de solo lectura. (Esto puede ser un problema ... ver más abajo).
- Los elementos de formulario con el conjunto de atributos de solo lectura se pasarán al procesador de formularios.
- Los elementos de formulario de solo lectura pueden recibir el foco
- Los elementos de formulario de solo lectura se incluyen en la navegación con pestañas.
disabled
implica readonly
pero readonly
no implica disabled
. En otras palabras, si un elemento tiene el disabled
atributo, no hay necesidad de incluirlo también readonly
. ¿Correcto?
No se activan eventos cuando el elemento tiene el atributo deshabilitado.
Ninguno de los siguientes se activará.
$("[disabled]").click( function(){ console.log("clicked") });//No Impact
$("[disabled]").hover( function(){ console.log("hovered") });//No Impact
$("[disabled]").dblclick( function(){ console.log("double clicked") });//No Impact
Mientras que solo lectura se activará.
$("[readonly]").click( function(){ console.log("clicked") });//log - clicked
$("[readonly]").hover( function(){ console.log("hovered") });//log - hovered
$("[readonly]").dblclick( function(){ console.log("double clicked") });//log - double clicked
Desactivado significa que no se enviarán datos de ese elemento del formulario cuando se envíe el formulario. Solo lectura significa que se enviarán todos los datos del elemento, pero el usuario no puede modificarlos.
Por ejemplo:
<input type="text" name="yourname" value="Bob" readonly="readonly" />
Esto enviará el valor "Bob" para el elemento "yourname".
<input type="text" name="yourname" value="Bob" disabled="disabled" />
Esto no enviará nada para el elemento "yourname".
readonly
y disabled
son valores booleanos. Usar en disabled
lugar de disabled="disabled"
(lo mismo para solo lectura)
attrname="attrname"
. De cualquier manera, no parece estar particularmente bien documentado, al menos no que pueda encontrar. Bueno, está esto: w3.org/TR/html4/intro/sgmltut.html#h-3.3.4.2 , pero solo menciona específicamente SGML y HTML, no XHTML ... demasiados acrónimos: S
Boolean attributes may legally take a single value: the name of the attribute itself (e.g., selected="selected").
tanto, la cadena vacía no parece ser válida.
Igual que las otras respuestas (deshabilitado no se envía al servidor, solo lectura) pero algunos navegadores evitan resaltar un formulario deshabilitado, mientras que solo lectura puede resaltarse (y copiarse).
http://www.w3schools.com/tags/att_input_disabled.asp
http://www.w3schools.com/tags/att_input_readonly.asp
Un campo de solo lectura no se puede modificar. Sin embargo, un usuario puede tabularlo, resaltarlo y copiar el texto de él.
Si el valor de un cuadro de texto deshabilitado debe mantenerse cuando se borra un formulario (restablecer), disabled = "disabled"
debe usarse, ya que el cuadro de texto de solo lectura no retendrá el valor
Por ejemplo:
HTML
Caja de texto
<input type="text" id="disabledText" name="randombox" value="demo" disabled="disabled" />
Botón de reinicio
<button type="reset" id="clearButton">Clear</button>
En el ejemplo anterior, cuando se presiona el botón Borrar, el valor de texto deshabilitado se conservará en el formulario. El valor no se retendrá en el caso deinput type = "text" readonly="readonly"