Em um módulo anterior, você aprendeu como usar o elemento <form>
.
Neste módulo, você vai aprender como um formulário funciona e quando usá-lo.
Você precisa usar um elemento <form>
?
Nem sempre é necessário colocar controles de formulário em um elemento <form>
.
Por exemplo, você pode fornecer um elemento <select>
para que os usuários escolham uma categoria de produto.
Você não precisa de um elemento <form>
aqui, porque não está armazenando nem processando dados no back-end.
No entanto, na maioria dos casos, ao armazenar ou processar dados de usuários,
use o elemento <form>
.
Como você vai aprender neste módulo, o uso de um <form>
oferece muitas funcionalidades integradas dos navegadores que você teria que criar por conta própria.
Um <form>
também tem muitos recursos de acessibilidade integrados por padrão.
Se você quiser evitar uma recarga de página quando um usuário enviar um formulário,
ainda poderá usar o elemento <form>
, mas melhore-o com
JavaScript.
Como o <form>
funciona?
Você aprendeu que um <form>
é a melhor maneira de gerenciar dados do usuário.
Você pode estar se perguntando como um formulário funciona.
O <form>
é um contêiner para controles de formulário interativos.
<form method="post">
<label for="name">Name</label>
<input type="text" name="name" id="name">
<button formaction="/name">Save</button>
</form>
Como funciona o envio de formulários?
Quando você envia um <form>
, o navegador verifica os atributos <form>
. Os dados são enviados como uma solicitação GET
ou POST
de acordo com o atributo method
. Se nenhum atributo method
estiver presente, uma
solicitação GET
será feita para o URL da página atual.
Como você pode acessar e processar os dados do formulário?
Os dados enviados podem ser processados pelo JavaScript no front-end usando uma solicitação GET
ou pelo código no back-end usando uma solicitação GET
ou POST
.
Saiba mais sobre
tipos de solicitação e transferência de dados de formulário.
Quando o formulário é enviado, o navegador faz uma solicitação para o URL que é o valor do atributo action
.
Além disso, o navegador verifica se o botão Enviar tem um atributo formaction
.
Nesse caso, o URL definido será usado.
Além disso, o navegador procura outros atributos no elemento <form>
,
por exemplo, para decidir se o formulário precisa ser validado (novalidate
),
se o preenchimento automático precisa ser usado (autocomplete="off"
) ou qual codificação precisa ser usada (accept-charset
).
Tente criar um formulário em que os usuários possam enviar a cor favorita deles.
Os dados precisam ser enviados como uma solicitação POST
, e o URL em que os dados serão processados precisa ser /color
.
Uma solução possível é usar este formulário:
<form method="post" action="/color"> <label for="color">What is your favorite color?</label> <input type="text" name="color" id="color"> <button>Save</button> </form>
Garantir que os usuários possam enviar o formulário
Há duas maneiras de enviar um formulário.
Clique no botão Enviar ou pressione Enter
ao usar qualquer controle de formulário.
É possível adicionar um botão Enviar de várias maneiras.
Uma opção é usar um elemento <button>
no formulário.
Se você não usar type="button"
, ele vai funcionar como um botão Enviar.
Outra opção é usar <input type="submit" value="Submit">
.
Uma terceira opção é usar <input type="image" alt="Submit" src="submit.png">
para criar um botão Enviar gráfico.
No entanto, agora que você pode criar botões gráficos com CSS, não é recomendável usar type="image"
.
Permitir que os usuários enviem arquivos
Use <input type="file">
para permitir que as pessoas façam upload e enviem arquivos, se necessário.
<label for="file">Choose file to upload</label>
<input type="file" id="file" name="file" multiple>
Primeiro, adicione um elemento <input>
com type="file"
ao formulário.
Adicione o atributo multiple
se os usuários precisarem fazer upload de vários arquivos.
Para garantir que os usuários possam fazer upload de arquivos, é necessário fazer mais uma mudança: defina o atributo enctype
no formulário.
O valor padrão é application/x-www-form-urlencoded
.
<form method="post" enctype="multipart/form-data">
…
</form>
Para garantir que os arquivos possam ser enviados, mude para multipart/form-data
.
Sem essa codificação, os arquivos não podem ser enviados com uma solicitação POST
.
Teste seu conhecimento
Teste seus conhecimentos sobre o elemento de formulário
Qual valor de enctype
é necessário para enviar arquivos?
multipart/form-data
multipart/form-files
form-data
form-files
É possível enviar dados do usuário sem um <form>
Como posso enviar um <form>
?
<button>
.Enter
.<input type="image">
.