- los elementos de tipo
inputsoninline. <input />no tiene tag de cierre.- usamos el atributo
typepara determinar el tipo de campo, según el contenido y formato. - podemos usar
inputs de forma independiente (si sólo nos interesa leer sus valores), pero si es información que queremos enviar/pedir de algún lado, necesitamos agruparlos dentro de unform. - un
formfunciona como un container de inputs, para enviar/requerir ciertos datos, en un único request. - los formularios nos sirven para recolectar input.
- asociar las
labels correspondientes a cada input:
<label for='full-name'>Name</label>
<input id='full-name' name='full-name' type='text'/>- setear el atributo
actiondel form para decir a dónde queremos enviar los datos (URL). - setear el atributo
namedel input para identificar los datos que enviamos en el form.⚠️ los valores del atributonamedeben respetar los nombres de parámetros esperados por la API que estemos usando, sino va a fallar el submit.
<form action="http://www.google.com/search" method="get">
<input type="search" id="search-box" name="q" placeholder="Search..." autocomplete="on" />
<button type="submit">Search with Google</button>
</form>Creating Autocomplete Dropdowns with the Datalist Element
- es muy recomendable hacer un wireframe del form antes de empezar a codearlo, al menos una versión lo-fi.
- setear
labeleinputasociado siempre en el mismo orden, para ser consistentes (y chequear que los atributosidyforcoincidan). - setear el atributo
requiredpara los campos que sean obligatorios (<input required .../>) - si el input espera un mail, usar el type
email. - elegir el tipo de input más apropiado en cada caso, también suma a la accesibilidad/ux.
⚠️ si usamos el métodogetpara el formulario, los datos de los inputs van a quedar expuestos en la URL. Suele utlizarse para búsquedas.⚠️ si vamos a enviar datos (sobre todo datos sensibles), setear el atributomethoddel form comopost. De esta forma, los datos se agregan albodydel request y no se muestran en la URL (ej: passwords).
<form action="https://google.com" method="post">
...
</form>