Tengo algunas entradas deshabilitadas en un formulario y quiero enviarlas a un servidor, pero Chrome las excluye de la solicitud.
¿Hay alguna solución para esto sin agregar un campo oculto?
<form action="/Media/Add">
<input type="hidden" name="Id" value="123" />
<!-- this does not appear in request -->
<input type="textbox" name="Percentage" value="100" disabled="disabled" />
</form>
Respuestas:
Los elementos con el
disabled
atributo no se envían o puede decir que sus valores no se publican (vea el segundo punto en el Paso 3 en la especificación HTML 5 para construir el conjunto de datos del formulario ).Es decir,
Para su información, por 17.12.1 en la especificación HTML 4:
Puedes usar
readonly
atributo en su caso, al hacer esto podrá publicar los datos de su campo.Es decir,
Para su información, por 17.12.2 en la especificación HTML 4:
fuente
Usando Jquery y enviando los datos con ajax, puede resolver su problema:
fuente
cursor:not-allowed;
Para publicar valores de entradas deshabilitadas además de las entradas habilitadas, simplemente puede volver a habilitar todas las entradas del formulario a medida que se envían.
Si prefieres jQuery:
Para ASP.NET MVC C # Razor, agrega el controlador de envío de esta manera:
fuente
Si absolutamente tiene que deshabilitar el campo y pasar los datos, puede usar un javascript para ingresar los mismos datos en un campo oculto (o simplemente configurar el campo oculto también). Esto le permitiría desactivarlo, pero aún así publicar los datos a pesar de que estaría publicando en otra página.
fuente
Estoy actualizando esta respuesta ya que es muy útil. Simplemente agregue solo lectura a la entrada.
Entonces la forma será:
fuente
Semánticamente esto se siente como el comportamiento correcto
Me preguntaría " ¿Por qué debo enviar este valor? "
Si tiene una entrada deshabilitada en un formulario, presumiblemente no desea que el usuario cambie el valor directamente
Cualquier valor que se muestre en una entrada deshabilitada debe ser
Suponiendo que el servidor que procesa el formulario es el mismo que el servidor que lo sirve, toda la información para reproducir los valores de las entradas deshabilitadas debe estar disponible en el procesamiento
De hecho, para preservar la integridad de los datos, incluso si el valor de la entrada deshabilitada se envió al servidor de procesamiento, realmente debería validarlo. ¡Esta validación requeriría el mismo nivel de información que necesitaría para reproducir los valores de todos modos!
Casi argumentaría que las entradas de solo lectura no deberían enviarse en la solicitud tampoco
Feliz de ser corregido, pero todos los casos de uso en los que puedo pensar donde se deben enviar entradas de solo lectura / deshabilitadas son realmente solo problemas de estilo disfrazados
fuente
Me parece que esto funciona más fácil. solo lea el campo de entrada, luego dele estilo para que el usuario final sepa que es de solo lectura. las entradas colocadas aquí (de AJAX, por ejemplo) aún pueden enviarse, sin código adicional.
fuente
Puede evitar totalmente la desactivación, es doloroso ya que el formato de formulario html no enviará nada relacionado con
<p>
alguna otra etiqueta.Entonces puedes poner regular
Agrega esto
readonly="readonly"
No deshabilitaría su texto, pero no lo cambiaría por usuario, por lo que funciona
<p>
y enviará valor a través del formulario. Simplemente elimine el borde si desea hacerlo más como<p>
etiquetafuente