Tengo dos páginas con formularios HTML. La primera página tiene un formulario de envío y la segunda página tiene un formulario de reconocimiento. El primer formulario ofrece una variedad de controles, mientras que la segunda página muestra nuevamente los datos del formulario de envío con un mensaje de confirmación. En este segundo formulario, todos los campos deben ser estáticos.
Por lo que puedo ver, algunos controles de formulario pueden ser readonly
y todos pueden serdisabled
, la diferencia es que aún puede tabular a un campo de solo lectura.
En lugar de hacer este campo por campo, ¿hay alguna forma de marcar todo el formulario como de solo lectura / deshabilitado / estático de modo que el usuario no pueda alterar ninguno de los controles?
No todos los elementos de formulario se pueden configurar
readonly
, por ejemplo:Entonces, la solución razonable sería establecer todos los
disabled
atributos de los elementos del formulariotrue
, ya que el OP no indicó que el formulario "bloqueado" específico se debe enviar al servidor (que eldisabled
atributo no permite).Otra solución, que se presenta en la demostración a continuación, es colocar una capa en la parte superior del
form
elemento que evitará cualquier interacción con todos los elementos dentro delform
elemento, ya que esa capa se establece con unz-index
valor mayor :MANIFESTACIÓN:
fuente
Puede usar esta función para deshabilitar el formulario:
Vea la demostración de trabajo aquí
Tenga en cuenta que usa jQuery.
fuente
En la página de confirmación, no coloque el contenido en controles editables, solo escríbalos en la página.
fuente
No hay una forma integrada que yo sepa para hacer esto, por lo que deberá encontrar una solución personalizada dependiendo de lo complicado que sea su formulario. Deberías leer esta publicación:
Convierta formularios HTML a solo lectura ( Actualización : enlace de publicación roto, enlace archivado )
EDITAR: Según su actualización, ¿por qué está tan preocupado por tenerlo como de solo lectura? Puede hacerlo desde el lado del cliente, pero si no, tendrá que agregar la etiqueta requerida a cada control o convertir los datos y mostrarlos como texto sin formato sin controles. Si está tratando de que sea de solo lectura para que la próxima publicación no se modifique, entonces tiene un problema porque cualquiera puede meterse con la publicación para producir lo que quiera, de modo que cuando finalmente reciba los datos, será mejor que lo esté revisando. nuevamente para asegurarse de que sea válido.
fuente
No hay una forma HTML oficial totalmente compatible para hacerlo, pero un poco de JavaScript puede ser muy útil. Otro problema con el que se encontrará es que los campos deshabilitados no se muestran en los datos POST
fuente
Esta es una solución ideal para deshabilitar todas las entradas , áreas de texto , selecciones y botones en un elemento específico.
Para jQuery 1.6 y superior :
O
jQuery 1.5 y abajo :
Y
fuente
Otra forma simple que es compatible con todos los navegadores sería:
HTML:
CSS:
Pero tenga en cuenta que las pestañas aún funcionan con este enfoque y que los elementos con foco aún pueden ser manipulados por el usuario.
fuente
Tener todos los identificadores de formulario numerados y ejecutar un bucle for en JS.
fuente
Prefiero usar jQuery:
find () iría mucho más profundo hasta el enésimo hijo anidado que children (), que busca solo hijos inmediatos.
fuente
La manera más fácil
fuente
Agrega una capa invisible HTML sobre el formulario. Por ejemplo
y estilo:
Por supuesto, el usuario puede ocultar esta capa en el navegador web.
fuente