lunes, 10 de agosto de 2015

Recoger valor de un campo con el atributo disabled="true"

Hace unos días se me presentaba un problema a la hora de recoger un dato de un formulario.

El código del campo es el siguiente:
echo form_input( array(
                        'id'            => 'puntos_totales',
                        'name'          => 'total_de_puntos',
                        'type'          => 'text',
                        'value'         => $fields['points'],
                        'placeholder'   => 'Minimo 100',
                        'disabled'      => true,
                    ) );

Pues nada, me pongo a hacer pruebas y no lograba recoger el valor del campo. Lo intente mediante el típico $_POST[], usando diferentes atajos que te permite code igniter y nada, que no me devolvía el valor.

Total, que me puse a mirar la documentación y resulta que cuando pones el atributo disabled a true, no te permite recoger el valor de dicho campo.

En caso de que os ocurra esto, podéis optar por varias opciones.

Usar el atributo ‘readonly’
echo form_input( array(
                        'id'            => 'puntos_totales',
                        'name'          => 'total_de_puntos',
                        'type'          => 'text',
                        'value'         => $fields['points'],
                        'placeholder'   => 'Minimo 100',
                        //'disabled'      => true,
                        'readOnly'      => "true",
                    ) );
Este atributo hará que el usuario no pueda escribir en el campo al igual que el atributo disabled. Sin embargo, si te permitirá recoger la información del campo. Pero tiene una pega y es que no se aplica el estilo de fondo gris que si se aplica al usar disabled.

Usar jquery

Y claro, a mi es que me gusta el fondo gris y lo quería si o si. Así que aquí tenéis el código Jquery que use para hacer una ‘pequeña trampa‘ y poder usar el atributo disabled y a la vez recoger el dato.

El código es bastante sencillo y lo teneis explicado.

Un saludo.

No hay comentarios:

Publicar un comentario