Saltar la navegación

3.2.7. Formularios

Los formularios ocupan un lugar predominante en el diseño y explotación de una aplicación o un sitio Web. Es, en efecto, la única forma de recibir de vuelta la información que proviene directamente del usuario final, estructurada, además, según las necesidades del diseñador.

El propósito último de los formularios es el procesamiento automático de los datos devueltos. Por ello es preciso mencionar, del lado del servidor, los lenguajes de programación de gestión de bases de datos como, por ejemplo, PHP o MySQL.

La etiqueta <form> ... </form> tiene como única función la de declarar al navegador que debe incluir un formulario. Esta etiqueta englobará los elementos o campos de formulario, como por
ejemplo: casillas de texto, casillas de marcar, listas desplegables, etc.

<html >
<head>
<title>Html5</title>
<meta charset="UTF-8">
</head>
<body>
<form action="">
Elementos del formulario
</form>
</body>
</html>

Los atributos usuales de la etiqueta

son:
  • name: Para asignar un nombre (name) al formulario.
  • action: Se especificará aquí el destino donde será enviada la información del formulario. El destino normalmente es una llamada a otra página, donde se procesarán los datos, alojada en un servidor. Por ejemplo: action = "http://www.servidor/procesamiento.php". También puede ser a sí mismo dejando action vacío.
  • target: Al igual que en los enlaces, target hace que el destino se muestre en la misma página, una nueva o un frame (ver enlace para más información).
  • method: Especifica el método HTTP ( GET o POST ) que se utilizará al enviar los datos del formulario. El método predeterminado al enviar datos del formulario es GET, sin embargo, cuando se utiliza, los datos del formulario enviado serán visibles.
  • enctype: Especifica en qué formato informático se transmitirán los datos del formulario. El valor por defecto es application/x-www-form-urlencoded. Para enviar archivos, este campo debe valer multipart/form-data y, por último, para el envío de datos a una dirección de correo electrónico mediante el protocolo mailto, el valor será text/plain.

La etiqueta debe, obligatoriamente, cerrarse. En caso de olvidar la etiqueta de cierre el navegador no mostrará ningún campo del formulario.

Puedes usar la página w3schools.com/action_page.php como destino del formulario y observar si los resultados son los esperados o no.

GET y POST

GET

GET es la opción por defecto de un formulario. Este método agrega datos de formulario a la URL en pares de nombre / valor mostrándose en el momento del envío/recepción.

¡Nunca use GET para enviar datos confidenciales! (será visible en la URL)

GET es mejor para datos no seguros, como cadenas de consulta en Google o el número de página que se está visitando.

POST

Utilice siempre POST si los datos del formulario contienen información confidencial o personal.

El método POST no muestra los datos del formulario enviado en el campo de dirección de página.

POST no tiene limitaciones de tamaño y puede usarse para enviar grandes cantidades de datos.

Elementos de un formulario

fieldset

Las etiquetas <fieldset> y <legend> se utilizan para agrupar elementos de formulario relacionados y proporcionar un título o leyenda descriptiva para el grupo.

La etiqueta <fieldset> actúa como un contenedor que agrupa campos del formulario. Ejemplo:

<fieldset>
<legend>Información de contacto</legend>
<label for="name">Nombre:</label>
<input type="text" id="name"><br>
<label for="email">Email:</label>
<input type="email" id="email"><br>
<label for="message">Mensaje:</label>
<textarea id="message"></textarea>
</fieldset>

En este ejemplo, la etiqueta <fieldset> envuelve el grupo de elementos de formulario relacionados con la información de contacto. La etiqueta <legend> se utiliza como una leyenda o título para el fieldset, proporcionando una descripción del grupo.

El uso de las etiquetas <fieldset> y <legend> ayuda a mejorar la accesibilidad y usabilidad de los formularios al proporcionar una estructura clara y agrupación visual de campos relacionados. También mejora el estilo general y la organización del formulario.

label

La etiqueta <label> ayuda a asociar una descripción de texto con un campo de entrada de formulario, lo que lo hace más accesible y fácil de usar. Ejemplo:

<label for="username">Nombre de usuario:</label>
<input type="text" id="username">

En este ejemplo, la etiqueta <label> se utiliza para crear una etiqueta para el campo de entrada de nombre de usuario. El atributo for de la etiqueta <label> especifica con qué elemento de entrada está asociado. En este caso, el valor del atributo for coincide con el atributo id del campo de entrada.

Cuando un usuario hace clic en la etiqueta, el campo de entrada correspondiente se enfoca o activa. Esto mejora la usabilidad y accesibilidad, ya que los usuarios pueden hacer clic en el texto de la etiqueta en lugar de hacer clic directamente en el campo de entrada.

input

La etiqueta <input> en HTML se utiliza para crear campos de entrada en un formulario que permiten a los usuarios ingresar datos. El tipo de dato que se ingresa depende del valor del atributo type de la etiqueta <input>. Veamos algunos ejemplos comunes de cómo se utiliza la etiqueta <input> en un formulario:

Campo de Texto: Permite a los usuarios ingresar texto, como su nombre o dirección de correo electrónico.

<input type="text" id="nombre" name="nombre" placeholder="Tu nombre">

Campo de Contraseña: Similar al campo de texto, pero los caracteres ingresados se ocultan por asteriscos o puntos para proteger la privacidad de la contraseña.

<input type="password" id="contrasena" name="contrasena" placeholder="Contraseña">

Casilla de Verificación (Checkbox): Permite a los usuarios seleccionar o deseleccionar una opción.

<input type="checkbox" id="suscripcion" name="suscripcion" value="aceptar">
<label for="suscripcion">Acepto los términos y condiciones</label>

Botón de Radio (Radio Button): Permite a los usuarios seleccionar una opción de un conjunto de opciones mutuamente excluyentes.

<input type="radio" id="opcion1" name="opcion" value="opcion1">
<label for="opcion1">Opción 1</label><br>
<input type="radio" id="opcion2" name="opcion" value="opcion2">
<label for="opcion2">Opción 2</label>

Botón (Button): Crea un botón que puede utilizarse para enviar un formulario o realizar otras acciones mediante JavaScript.

<input type="button" value="Enviar" onclick="enviarFormulario()">

Campo de Correo Electrónico: Ayuda a validar que se ingrese una dirección de correo electrónico válida.

<input type="email" id="correo" name="correo" placeholder="Correo electrónico">

Campo de Número: Permite ingresar valores numéricos y puede incluir restricciones como mínimo y máximo.

<input type="number" id="edad" name="edad" min="18" max="99" placeholder="Edad">

Estos son solo algunos ejemplos de cómo se puede utilizar la etiqueta <input> en un formulario HTML.

button

La etiqueta <button> en HTML se utiliza para crear un botón. Puede ser utilizado para activar una acción o comportamiento específico al ser pulsado.

<button>Haz clic</button>

También puedes utilizar el atributo type para definir el tipo de botón. Algunos valores comunes para el atributo type son:

  • submit: Un botón que envía un formulario.
  • reset: Un botón que reinicia los valores iniciales de los campos de un formulario.
<button type="submit">Enviar</button>

select

La etiqueta <select> en HTML se utiliza para crear un menú desplegable o una lista de opciones seleccionables. Permite al usuario elegir una opción de entre varias disponibles.

Ejemplo básico de cómo utilizar la etiqueta <select> junto con la etiqueta <option> para crear un menú desplegable:

<select>
   <option value="option1">Opción 1</option>
   <option value="option2">Opción 2</option>
   <option value="option3">Opción 3</option>
</select>

Cada <option> dentro de la etiqueta <select> representa una opción en el menú desplegable. El atributo value se utiliza para especificar el valor asociado a cada opción, que se enviará al servidor cuando se envíe el formulario.

También puedes agregar el atributo selected a una opción específica para que se seleccione automáticamente cuando se muestre el menú desplegable:

<select>
    <option value="option1">Opción 1</option>
    <option value="option2" selected>Opción 2</option>
    <option value="option3">Opción 3</option>
</select>

En este ejemplo, la opción «Opción 2» estará seleccionada de forma predeterminada cuando se muestre el menú desplegable.

La etiqueta <select> en HTML también admite el atributo multiple, que permite al usuario seleccionar múltiples opciones del menú desplegable.

Al agregar el atributo multiple a la etiqueta <select>, se permite la selección de varias opciones manteniendo presionada la tecla Ctrl (en Windows) o Cmd (en Mac) mientras se hacen clic en las opciones deseadas. Ejemplo:

<select multiple>
    <option value="option1">Opción 1</option>
    <option value="option2">Opción 2</option>
    <option value="option3">Opción 3</option>
</select>

La etiqueta <optgroup> se utiliza dentro de un elemento <select> para agrupar varias opciones relacionadas en una categoría o conjunto. Esto proporciona una organización visual a las opciones dentro de la lista desplegable. La etiqueta <optgroup> debe contener una o más etiquetas <option> que representan las opciones dentro de ese grupo.

<select>
    <optgroup label="Frutas">
        <option value="manzana">Manzana</option>
        <option value="naranja">Naranja</option>
        <option value="platano">Plátano</option>
    </optgroup>
    <optgroup label="Verduras">
        <option value="zanahoria">Zanahoria</option>
        <option value="brocoli">Brócoli</option>
        <option value="espinaca">Espinaca</option>
    </optgroup>
</select>

En este ejemplo, hemos creado una lista desplegable con dos grupos: «Frutas» y «Verduras». Cada grupo está definido por la etiqueta <optgroup>, que tiene un atributo label que especifica el nombre del grupo. Dentro de cada grupo, hemos incluido etiquetas <option> que representan las opciones individuales, como «Manzana», «Naranja», «Zanahoria», etc.

Cuando se renderiza en un navegador, esto creará una lista desplegable con las opciones agrupadas visualmente bajo las etiquetas de grupo. Esto facilita que los usuarios encuentren y seleccionen las opciones que desean de manera más organizada.

datalist

La etiqueta <datalist> se utiliza junto con la etiqueta <input> para proporcionar una lista de opciones predefinidas que ayudan a los usuarios a seleccionar un valor mientras escriben en un campo de entrada <input>. Esta etiqueta crea una lista desplegable de sugerencias basadas en las opciones que defines, lo que facilita la entrada de datos y mejora la experiencia del usuario.

A continuación se puede ver un ejemplo de cómo se utiliza la etiqueta <datalist>:

<label for="frutas">Selecciona una fruta:</label>
<input list="frutas" id="fruta" name="fruta" />
 
<datalist id="frutas">
    <option value="Manzana"></option>
    <option value="Banana"></option>
    <option value="Naranja"></option>
    <option value="Uva"></option>
    <option value="Pera"></option>
</datalist>

En este ejemplo, hemos creado un campo de entrada de texto con la etiqueta <input> y le hemos asignado un atributo list que corresponde al id de la etiqueta <datalist>. El <datalist> contiene opciones (<option>) que representan las sugerencias disponibles para el campo de entrada.

Cuando un usuario comienza a escribir en el campo de entrada, verá una lista desplegable con las opciones del <datalist>. Puede seleccionar una de las opciones o seguir escribiendo. Esto es especialmente útil para formularios en los que los usuarios deben elegir una opción de una lista predefinida, como una lista de países o productos.

El uso de <datalist> mejora la usabilidad y facilita a los usuarios la entrada de datos, especialmente en dispositivos móviles y pantallas táctiles.

textarea

La etiqueta <textarea> en HTML se utiliza para crear un área de entrada de texto de varias líneas. Permite a los usuarios ingresar y editar texto más largo que un solo campo de entrada de texto.

Ejemplo básico de cómo utilizar la etiqueta <textarea>:

<textarea rows="4" cols="40">
Esto es un textarea con 4 fulas y 40 columnas.
</textarea>

En este ejemplo, el atributo rows define el número de filas visibles del área de texto, mientras que el atributo cols establece el número de columnas visibles.

El texto dentro de la etiqueta <textarea> se mostrará inicialmente dentro del área de texto y los usuarios podrán editarlo y seleccionarlo.

https://www.w3schools.com/html/html_form_elements.asp

Ejemplo

<form action="https://www.w3schools.com/action_page.php" method="post">
    <fieldset>
        <legend>Datos personales</legend>
        <label for="nombre">Nombre y apellidos: </label>
        <input name="nombre" id="nombre" type="text"><br>
        <label for="socio">Socio:</label>
        <select name="socio" id="socio">
            <!--Etiqueta option-->
            <option value="value1">Sí<option>
            <option value="value2" selected>No<option>
        </select><br><br>
        <label>Edad: </label>
        <input name="edad" type="checkbox" value="20-39"> 20-39
        <input name="edad" type="checkbox" value="40-59"> 40-59
        <input name="edad" type="checkbox" value="60-79"> 60-79<br><br>
        <label for="email">Email: </label>
        <input id="email" name="email" type="email"><br><br>
        <label for="estudios">Estudios: </label>
        <select name="estudios" id="estudios">
            <optgroup label="Estudios Universitarios">
                <option>Doctorado</option>
                <option>Máster</option>
                <option>Grado</option>
            </optgroup>
            <optgroup label="Ciclo Formativo">
                <option>Grado Superior</option>
                <option>Grado Medio</option>
            </optgroup>
        </select><br><br>
        <label for="navegador">Elige tu navegador favorito: </label>
        <input name="navegador" id="navegador" list="browsers">
        <datalist name="browsers" id="browsers">
            <option value="Chrome">
            <option value="Firefox">
            <option value="Internet Explorer">
            <option value="Opera">
            <option value="Safari">
            <option value="Microsoft Edge">
        </datalist><br><br>
        <label for="mensaje">Escribe tu mensaje: </label>
        <textarea rows="10" cols="50" placeholder="Mensaje" id="mensaje" name="mensaje" ></textarea>
    </fieldset>
    <input type="submit" name="enviar" value="Enviar">
</form>

En el navegador se mostrará un formulario que se podrá rellenar como en el ejemplo siguiente:


Formulario

La página www.w3schools.com/action_page.php recibirá todos los datos y podrá tratarlos como el programador desee. En este caso, mostrando los datos enviados:

Formulario resultado

Atributos usados en formularios

Cada etiqueta tiene una serie de atributos propios aunque coinciden un muchos de ellos. Puedes consultar los atributos de INPUT aquí.

Los más comunes son:

name

El atributo name se utiliza para identificar un campo de entrada en particular. Es especialmente útil cuando se procesan los datos del formulario en el servidor, ya que actúa como clave para los valores ingresados.


<input type="text" name="nombre_usuario" placeholder="Ingrese su nombre">

value

El atributo value define el valor predeterminado de un campo de entrada. Este valor se envía al servidor cuando se envía el formulario.


<input type="text" name="nombre" value="John Doe">

 

placeholder

El atributo placeholder muestra un texto de sugerencia en el campo de entrada cuando está vacío. Este texto desaparece cuando el usuario comienza a escribir en el campo.


<input type="text" name="correo" placeholder="Ingrese su correo electrónico">

 

required

El atributo required indica que un campo de entrada es obligatorio y debe completarse antes de enviar el formulario.


<input type="text" name="nombre" placeholder="Ingrese su nombre" required>

 

disabled

El atributo disabled desactiva un campo de entrada, lo que significa que los usuarios no pueden interactuar con él ni modificar su valor. Los campos desactivados no se envían con el formulario.


<input type="text" name="nombre" value="John Doe" disabled>

 

readonly

El atributo readonly hace que un campo de entrada sea de solo lectura. A diferencia de los campos desactivados, los campos de solo lectura sí se envían con el formulario, pero los usuarios no pueden modificar su valor.


<input type="text" name="id_usuario" value="12345" readonly>

 

id

El atributo id asigna un identificador único al elemento . Este identificador se puede utilizar para seleccionar y manipular el elemento mediante JavaScript y para aplicar estilos específicos mediante CSS. Los valores de los atributos id deben ser únicos en todo el documento.


<input type="text" id="nombre_usuario" name="nombre_usuario" placeholder="Ingrese su nombre de usuario">

 

class

El atributo class permite asignar una o varias clases al elemento . Las clases son útiles para aplicar estilos CSS y manipular elementos que comparten características comunes mediante JavaScript. Puedes asignar múltiples clases separándolas con espacios.


<input type="text" class="formulario-entrada entrada-nombre" name="nombre" placeholder="Ingrese su nombre">

 

Ejercicio

La Web juanpalomotuloguisasyolocomo.es tiene un formulario en el que, los visitantes a la página, rellenan una información inicial que luego en una segunda página se pide el resto para confeccionar así una receta. El formulario inicial pide la siguiente información:

  • Nombre de la receta (llámala nombre)
  • Correo del autor (llámala correo)
  • Momento para comer: desayuno, almuerzo, merienda, cena, postre, ... Usa checkboxes para que se puedan elegir varios. (llámalo momento)
  • Ingredientes necesarios escogidos de una lista entre carne, pescado, verdura y fruta. Se debe poder elegir varios. (llámalo ingredientes)
  • Tiempo de preparación aproximado elegido de dos radios: uno para las horas de 0 a 2; y otro para los minutos en franjas de 15 minutos. (llámalos horas y minutos)

Crea un diseño usando fieldset, label, optgroup, etc.

Para probar la información que se envía, usa la página https://www.w3schools.com/action_page.php

Para ver cómo se trataría la información en otra página con formulario, usa https://lm.ciclo.iesnervion.es/

Creado con eXeLearning (Ventana nueva)