-
Notifications
You must be signed in to change notification settings - Fork 0
Week 2_4(es): Formulario de HTML
Vamos a crear formularios en HTML donde los usuarios pueden llenar los datos!
De vez en cuando los usuarios tienen que llenar la información y enviarla al servidor.
Para hacerlo, necesitamos entradas y botón para enviar como abajo.
Mandar datos y guardarlos es el trabajo de back end, que no es el tema de nuestro curso. Pero, diseñar el formulario es el trabajo de front end.
Antes de empezar, vamos a crear un archivo nuevo nombrado form.html
.
Utilizamos la etiqueta <form>
para indicar un formulario total con un botón de enviar.
La etiqueta <input>
crea un entranda y la etiqueta <label>
muestra la etiqueta de la entrada.
<form>
<label>First Name:</label>
<input type="text">
</form>
Como pueden ver, el elemento <input>
es un elemento vacío (empty element).
Se ve bien porque la etiqueta y la entrada están situadas una al lado del otra.
Pero necesitamos conectar la etiqueta de la entrada al elemento <input>
en el código.
Queremos mover el cursor automáticamente a la entrada(field) cuando hacemos el clic en el nombre de la etiqueta.
Para hacerlo, utilizamos el atributo for
en la etiqueta <label>
como un valor y ponemos el mismo valor en el atributo id
de la etiqueta <input>
.
<form>
<label for="firstName">First Name:</label>
<input type="text" id="firstName">
</form>
Vamos a revisarlo en el navegador!
También es posible conectar la entrada y la etiqueta si hacemos nesting el elmento <input>
dentro del elemento <label>
como abajo.
<form>
<label for="firstName">
First Name:
<input type="text" id="firstName">
</label>
</form>
Los resultados de dos códigos parecen iguales, pero el segundo código no funciona en algunos lectores de pantallas.
Por eso les recomiendo utilizar el primer código.
Vamos agregar otra etiqueta y entrada para apellido.
Ahora, necesitamos un botón para enviar. Para hacerlo, utilizamos la etiqueta <input>
con el atributo type
con su valor "submit"
.
Pueden poner la etiqueta del botón usando el atributo value
.
<input type="submit" value="Save!">
Recuerden que el botón no va a funcionar en realidad!
Porque es relacionado a back end, y en este curso estamos construyendo la parte que los usuarios ven que es front end.
Pero, hay un atributo que necesitamos agregar a cada entrada para que el formulario sea accesible al los idiomas de programación (back end) para que pueda utilizar los datos.
Por este propósitom existe el atributo name
.
Utilizamos el atributo name
para cada entrada(salvo una para el botón) para indicar el nombre de cada entrada.Y entonces el desarrollador de back end puede acceder cada entrada.
<form>
<label for="firstName">First Name:</label>
<input type="text" id="firstName" name="firstName">
<label for="lastName">Last Name:</label>
<input type="text" id="lastName" name="lastName">
<input type="submit" value="Save!">
</form>
Pueden usar la etiqueta <input>
con el tipo(type) "text"
para recibir correos de los usuarios. Pero existe un tipo de elemento especial solo para los correos, se llama tipo(type) "email"
.
<input type="email">
Vamos a agregar las etiquetas y los atributos que hemos aprendido para completar el formulario.
<label for="email">Email:</label>
<input type="email" id="email" name="email">
<input type="submit" value="Save!">
Es útil usar el tipoI email
porque
- El navegador automáticamente valida los datos.
Si ponen un texto que no tenga el formulario de correo, lo va a avisar a los usuarios. - Muestra el teclado adecuado en los aparatos táctiles.
En las pantallas táctiles, saldrán@
y.
automáticamente en el teclado.
Utilizamos el tipo(type) "tel"
para poner los números de teléfono.
Podemos escribir el código como abajo.
<label for="telephone">Telephone:</label>
<input type="tel" id="telephone" name = "telephone">
<input type="submit" value="Save!">
Si utilizamos la etiqueta <input>
con el valor de type
como "tel"
, saldrán los números para marcar el número de teléfono.
Cuando queremos recibir más que una línea de texto, utilizamos la etiqueta <textarea>
.
- Al contrario al elemento
<input>
, la etiqueta<textarea>
no es el elemento vacío(empty element). - Podemos establecer un valor por defecto(default) por poniendo un contenido dentro del elemento
<textarea>
. - El elemento
<textarea>
no requiere el atributotype
.
<label for="yourMessage">Your Message:</label>
<textarea id="yourMessage" name="yourMessage">Thank you.</textarea>
Vamos a revisarlo en el navegador!
Los usuarios pueden escribir varias líneas o párrafos si pulsan enter en la entrada.
Hay 3 tipos de formularios en que los usuarios pueden elegir opciónes.
- Select (dropdown)
El selectbox es útil cuando
- los usuarios ya saben que van a elegir
- hay muchas opciónes y es difícil mostrarlas todas en una pantalla
- Radio
El radio es útil cuandon
- es una decisión importante(tienen que ver todas las opciónes)
- solo hay pocas opciónes y se puede mostrarlas todas en una pantalla
- Checkbox
El checkbox es útil cuando quieren que los usuarios elijan dos o más opciónes simultáneamente.
Utilizamos la etiqueta <select>
para envolver la etiqueta <option>
que significa cada opción.
<select>
<option>Red</option>
<option>Green</option>
<option>Blue</option>
</select>
Necesitamos usar el atributo value
en cada opción para que contenga el dato verdadero para transmitirlo al servidor.
En este caso, necesitamos enviar el dato en la forma de colorRed
para la opción Red, colorGreen
para la opción Green y demás.
<select>
<option value="colorRed">Red</option>
<option value="colorGreen">Green</option>
<option value="colorBlue">Blue</option>
</select>
Ahora, vamos a agregar el atributo name
a la etiqueta <select>
, para que el desarrollador de back end pueda acceder a la etiqueta.
<select name="favoriteColor">
Vamos a agregar la etiqueata para el grupo de opciónes y conectar la etiqueta con las opciónes usando el atributo for
y el atributo id
que hemos aprendido.
<label for="favoriteColor">What is your favorite color?</label>
<select id="favoriteColor" name="favoriteColor">
<option value="colorRed">Red</option>
<option value="colorGreen">Green</option>
<option value="colorBlue">Blue</option>
</select>
Con el código abajo, pueden ver un botón de radio en el navegador.
<input type="radio">
Vamos a agregar las etiquetas.
<input type="radio" id="fish"><label for="fish">Fish</label>
<input type="radio" id="vegetables"><label for="vegetables">Vegetables</label>
<input type="radio" id="salad"><label for="salad">Salad</label>
Si ponemos el mismo nombre a cada elemento <input>
, el navegador sabrá que las tres opciónes son relacionadas y que los usuarios tiene que elegir solo una opción entre las tres.
También, necesitamos indicar el dato verdadero para enviar al servidor usando el atributo value
.
<input type="radio" id="fish" name="favoriteMenu" value="menu1"><label for="fish">Fish</label>
<input type="radio" id="vegetables" name="favoriteMenu" value="menu2"><label for="vegetables">Vegetables</label>
<input type="radio" id="salad" name="favoriteMenu" value="menu3"><label for="salad">Salad</label>
Ahora vamos a agregar las preguntas para los grupos de opciónes.
Utilizamos la etiqueta <legend>
para escribir la pregunta y la etiqueta <fieldset>
para envolver la pregunta y las opciónes.
<fieldset>
<legend>Which menu do you prefer? (choose one)</legend>
<input type="radio" id="fish" name="favoriteMenu" value="menu1"><label for="fish">Fish</label>
<input type="radio" id="vegetables" name="favoriteMenu" value="menu2"><label for="vegetables">Vegetables</label>
<input type="radio" id="salad" name="favoriteMenu" value="menu3"><label for="salad">Salad</label>
</fieldset>
El checkbox field es casi igual con el radio field.
Solo utilizamos checkbox
en vez de radio
.
<fieldset>
<legend>Why do you like HTML? (check all that apply)</legend>
<input type="checkbox" id="fun" name="htmlReason" value="reason1"><label for="fun">It's fun.</label>
<input type="checkbox" id="easy" name="htmlReason" value="reason2"><label for="easy">It's easy.</label>
<input type="checkbox" id="exciting" name="htmlReason" value="reason3"><label for="exciting">It's exciting.</label>
<input type="checkbox" id="no" name="htmlReason" value="reason4"><label for="no">I don't like it. :( :( :(</label>
</fieldset>