Esto es lo que encontré por Firebug en Firefox.
¿Es lo mismo en otros navegadores?
Si es así, ¿cuál es la razón de esto?
Esto es lo que encontré por Firebug en Firefox.
¿Es lo mismo en otros navegadores?
Si es así, ¿cuál es la razón de esto?
Respuestas:
Sí, todos los navegadores no deben enviar las entradas deshabilitadas, ya que son de solo lectura.
Más información (sección 17.12.1)
Definiciones de atributos
disabled [CI] Cuando se establece para un control de formulario, este atributo booleano deshabilita el control para la entrada del usuario. Cuando se establece, el atributo deshabilitado tiene los siguientes efectos en un elemento:
- Los controles deshabilitados no reciben foco.
- Los controles deshabilitados se omiten en la navegación con pestañas.
- Los controles deshabilitados no pueden tener éxito.
Los siguientes elementos admiten el atributo deshabilitado: BOTÓN, ENTRADA, OPTGROUP, OPTION, SELECT y TEXTAREA.
Este atributo se hereda, pero las declaraciones locales anulan el valor heredado.
Cómo se representan los elementos deshabilitados depende del agente de usuario. Por ejemplo, algunos agentes de usuario "desactivan" elementos de menú deshabilitados, etiquetas de botones, etc.
En este ejemplo, el elemento INPUT está deshabilitado. Por lo tanto, no puede recibir la entrada del usuario ni se enviará su valor con el formulario.
<INPUT disabled name="fred" value="stone">
Nota. La única forma de modificar dinámicamente el valor del atributo deshabilitado es a través de un script.
<input type="hidden">
elemento con el mismo nombre / valor que la entrada deshabilitada.
disabled
la entrada no enviará datos.
Usa el readonly
atributo:
<input type="text" readonly />
readonly
funciona, solo asegúrese de pasar el atributo "name" a la entrada.
Puede usar tres cosas para imitar deshabilitado:
HTML: readonly
atributo (para que el valor presente en la entrada se pueda usar en el envío del formulario. Además, el usuario no puede cambiar el valor de entrada)
CSS: 'pointer-events':'none'
(impide que el usuario haga clic en la entrada)
HTML: tabindex="-1"
(bloqueando al usuario para navegar a la entrada desde el teclado)
No se envían, porque eso es lo que dice en la especificación W3C .
17.13.2 Controles exitosos
Un control exitoso es "válido" para el envío. [recorte]
- Los controles que están deshabilitados no pueden tener éxito.
En otras palabras, la especificación dice que los controles que están deshabilitados se consideran inválidos y no deben enviarse.
Disabled
los controles no pueden tener éxito y un control exitoso es "válido" para el envío. Esta es la razón por la cual los controles deshabilitados no se envían con el formulario.
Hay dos atributos, a saber, readonly
y disabled
, que pueden hacer una entrada de solo lectura. Pero hay una pequeña diferencia entre ellos.
<input type="text" readonly />
<input type="text" disabled />
readonly
atributo desactiva su texto de entrada y los usuarios ya no pueden cambiarlo.disabled
atributo no solo hará que su texto de entrada esté deshabilitado (inmutable) sino que tampoco se puede enviar .Enfoque jQuery (1):
$("#inputID").prop("readonly", true);
$("#inputID").prop("disabled", true);
Enfoque jQuery (2):
$("#inputID").attr("readonly","readonly");
$("#inputID").attr("disabled", "disabled");
Enfoque de JavaScript:
document.getElementById("inputID").readOnly = true;
document.getElementById("inputID").disabled = true;
PS disabled
y readonly
son atributos html estándar. prop
introducido con jQuery 1.6
.
todavía se puede hacer clic en los controles de selección, incluso en el atributo de lectura
si aún desea deshabilitar el control pero desea que se publique su valor. Puede considerar crear un campo oculto. con el mismo valor que tu control.
luego cree un jquery, en el cambio de selección
$('#your_select_id').change(function () {
$('#your_hidden_selectid').val($('#your_select_id').val());
});