Formulários e inputs


Praticamente todo site que faz algo por você, uma caixa de busca, um login, uma finalização de compra, um campo de comentário, é construído a partir de um formulário. Um formulário é o que faz a página parar de só falar com o visitante e começar a ouvi-lo: ele coleta o que a pessoa digita, marca ou seleciona, e passa esses dados para serem processados. Este capítulo trata do HTML que torna isso possível.
O elemento form
Um formulário é um contêiner que agrupa as coisas que um visitante preenche. Você envolve seus inputs e um botão dentro de um elemento <form>, e o trabalho do formulário é reunir tudo e enviar quando o visitante terminar.
<form>
<label>Seu nome</label>
<input>
<button>Enviar</button>
</form>Pense nisso como um formulário de papel que você preenche no consultório médico. A folha contém todas as caixinhas, você escreve em cada uma, e no final você devolve a folha inteira de uma vez. O elemento <form> é essa folha.
<form> é o contêiner que guarda seus inputs e um botão, e ele envia tudo junto quando alguém faz a submissão. Pense no formulário de papel de um balcão: uma folha só, várias caixinhas, devolvida de uma vez. Envolva seus campos em um form e você ganha esse comportamento de reunir-e-enviar sem fazer nada complicado. Inputs e labels
Um <input> é a caixa em que o visitante digita. Sozinho, porém, um input é uma caixa vazia sem nenhuma pista do que ela representa. É para isso que serve um label: é o texto que diz ao visitante o que colocar na caixa.
<label for="city">Cidade</label>
<input id="city">Todo input precisa de um label. Você conecta os dois dando ao input um id e apontando o label para ele com for, usando a mesma palavra nos dois lugares. Uma vez ligados, clicar no label coloca o cursor na caixa, o que é uma pequena gentileza que torna o formulário mais fácil de usar para todo mundo.
<input> é a caixa onde as pessoas digitam, e o <label> é o texto que diz o que vai ali. Ligue os dois com for e id correspondentes, e clicar no label leva direto para a caixa. Dê um label para cada input; uma caixa solitária sem nenhuma palavra ao lado só confunde as pessoas. Outros controles
Nem tudo é uma caixa de texto simples. Algumas perguntas são melhor respondidas marcando, escolhendo ou selecionando de uma lista. Uma caixa de marcação (uma checkbox) é uma chave de ligado ou desligado, e um dropdown deixa alguém escolher uma opção entre várias.
<label>
<input type="checkbox"> Quero receber a newsletter
</label>
<label for="size">Tamanho</label>
<select id="size">
<option>Pequeno</option>
<option>Médio</option>
<option>Grande</option>
</select>Você não precisa memorizar tudo isso. O ponto por enquanto é que um formulário pode fazer suas perguntas do jeito que combinar: digitando, marcando ou escolhendo de uma lista.
<input type="checkbox">, e um dropdown é um <select> contendo opções <option>. Não precisa memorizar tudo; o formulário tem mais do que caixas simples quando a pergunta pede isso. Como os dados do formulário são nomeados e enviados
Quando um formulário é enviado, cada resposta precisa de um rótulo para que quem a recebe saiba de qual caixa ela veio. Esse rótulo é o name do input. Você o define uma vez, e ele acompanha o valor.
<label for="city">Cidade</label>
<input id="city" name="city">Se o visitante digitar "Lisboa" nessa caixa, o formulário envia o par "city é Lisboa". O name é como o lado que recebe distingue uma resposta de outra. Um input sem name fica totalmente de fora da submissão, então esse pequeno atributo é o que realmente faz o dado aparecer.
name de cada input é a etiqueta da sua resposta, para que quem recebe saiba que um valor veio da caixa de cidade e não da de e-mail. Defina o name, e o valor da caixa é enviado como um par rotulado. Esqueça isso, e o campo fica silenciosamente fora, o que confunde muita gente na primeira vez que um formulário não devolve nada. 
