Formularios en HTML
Los formularios HTML son la manera de interacción entre el usuario y el sitio web. Se utilizan para recoger datos introducidos por el usuario y llevarlos al servidor para el procesamiento.
El elemento <form>
Este elemento en HTML5 se utiliza para crear el formulario con el que el usuario tendrá interacción por medio del sitio web al servidor. Puede ser para solicitar una búsqueda o para introducir datos a una base de datos.
<form>
<!-- elementos del form -->
</form>
Atributos del <form>
Como aprendimos en un post anterior la etiqueta <form>
tiene sus atributos como cualquier otra equiqueta HTML, como lo son:
action
: es la URL de un programa que procesa la información enviada por medio del formulario. Ejemplo:
<form action="/submit-form">
.
elementos del form
.
</form>
-
method
: es el método HTTP que el navegador usa para enviar el formulario. Los valores posibles son:GET
: los datos del formulario son adjuntados a la URL dek atributoaction
, con un ’?’ separador, y la URL resultante es enviada al servidor.POST
: los datos del formulario son incluidos en el cuerpo del formulario y son enviados al servidor.
-
enctype
: cuando el valor delmethod
esPOST
este atributo es el tipo MIME del contenido que es usado para enviar el formulario al servidor. Los posibles valores son:application/x-www-form-urlencoded
: El valor por defecto si un atributo no está especificado.multipart/form-data
: Usar este valor si se está usando el elemento<input>
con el atributo type ajustado a “file”.text/plain
: Usar este valor si el formulario contiene texto plano.
-
target
: un nombre o keyword inicando donde mostrar la respuesta que es recibida despues de enviar el formulario._blank
: Carga la respuesta dentro de una nueva ventana_self
: Carga la respuesta dentro del mismo frame HTML_parent
: Carga la respuesta en el marco padre del marco actual en HTML._top
: Carga la respuesta en el marco principal del documento HTML.
-
novalidate
: Este atributo booleano indica que el formulario no es validado cuando es enviado. Si el atributo no existe formnovalidate en un<button>
o en un elemento<input>
que pertenece al formulario.
Elementos básicos de un formulario
<input>
:<label>
:<textarea>
:<button>
:<select>
y<option>
:
Elemento <input>
:
Se utiliza para crear controles interactivos basados en la web, con el fin de recidatos del usuario.
- Tipos de
<input>
mas utilizados:
<input type="text" placeholder="Texto">
<input type="password" placeholder="Contraseña">
<input type="email" placeholder="Correo electrónico">
<input type="number" placeholder="Número">
<input type="date" placeholder="Fecha">
<input type="checkbox"> Acepto términos y condiciones
<input type="radio" name="gender" value="male"> Masculino
<input type="radio" name="gender" value="female"> Femenino
<input type="submit" value="Enviar">
<input type="file" accept="image/*">
Elemento <label>
:
Representa una etiqueta para un elemento en una interfaz de usuario. Este puede estar asociado con un control ya sea mediante la utilizacion del atributo for, o ubicando el control dentro del elemento label.
Ejemplo:
<!-- Un simple ejemplo de un label con el atributo for -->
<label for="Name">Click me</label>
<input type="text" id="Name" name="Name" />
<!-- Aun mas simple -->
<label>Click me <input type="text" id="Name" name="Name" /></label>
Elemento <textarea>
:
Representa un control para la edición mutilínea de texto sin formato.
<textarea name="textarea" rows="10" cols="50">Write something here</textarea>
Elemento <button>
:
La etiqueta de HTML <button>
representa un elemento cliqueable de tipo botón que puede ser utilizado en formularios o en cualquier parte de la página que necesite un botón estándar y simple de aplicar.
<button name="button">Click me</button>
Elementos <select>
y <option>
:
Representa un control que muestra un menú de opciones. Las opciones contenidas en el menú son representadas por elementos <option>
, los cuales pueden ser agrupados por elementos <optgroup>
.
Ejemplo:
<!-- The second value will be selected initially -->
<select name="select">
<option value="value1">Value 1</option>
<option value="value2" selected>Value 2</option>
<option value="value3">Value 3</option>
</select>
Construyamos nuestro primer formulario
Haremos un formulario sencillo, para enviar un mensaje a un WhatsApp (hoy utilizaremos solo el código de área de Colombia).
Necesitaremos 3 elementos:
- El número de teléfono a donde enviar el mensaje.
- El mensaje que enviaremos.
- El botón de enviar.
<form>
<p class="campo">
<label for="phone-number">Teléfono:</label>
<input type="text" id="phone-number" name="phone-number" required placeholder="Número de teléfono">
</p>
<p class="campo">
<label for="message">Mensaje:</label>
<textarea id="message" name="message" placeholder="Escribe tu mensaje aquí"></textarea>
</p>
<p class="campo">
<button type="submit" id="sendBtn">Enviar</button>
</p>
<!-- agregamos algunos estilos -->
<style>
form {
width: 300px;
background-color: #f1f1f1;
margin: 20px auto;
border-radius: 10px;
padding: 20px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
}
.campo {
width: 100%;
margin-bottom: 15px;
display: flex;
flex-direction: column;
}
label {
margin-bottom: 5px;
font-weight: bold;
}
input, textarea {
width: 100%;
padding: 8px;
border: 1px solid #ccc;
border-radius: 5px;
font-size: 16px;
resize: none
}
button {
padding: 10px;
border: none;
border-radius: 5px;
background-color: #4CAF50;
color: white;
font-size: 16px;
cursor: pointer;
}
button:hover {
background-color: #45a049;
}
</style>
<!-- ahora la funcionalidad-->
<script>
sendBtn.addEventListener('click', (e)=>{
e.preventDefault()
let phone = document.querySelector('#phone-number').value;
let message = document.querySelector('#message').value;
let url = `https://wa.me/57${phone}?text=${message}`;
window.open(url, '_blank');
} )
</script>
</form>