Como pegar dados de formulário com JavaScript
Neste artigo você vai aprender a como pegar dados de formulário com JavaScript, com apenas uma única função da linguagem

Fala programador(a), beleza? Bora aprender mais sobre formulários e JavaScript!
Para extrair os dados de um form com JS vamos precisar fazer duas coisas
Primeiramente selecionar o elemento do formulário, podemos fazer isso com querySelector
E depois transformar esse elemento em uma instância de FormData
E então conseguimos pegar os valores de um input com o método get, desta instância
Veja um exemplo prático do que foi explicado:
const formData = new FormData(document.querySelector('form'))
const inputValue = formData.get("name")
console.log(inputValue)
No caso acima selecionamos o form e criamos a instância, como explicado anteriormente
E por fim extraímos o valor de um campo que contém o atributo name como name, simbolizando o nome de um usuário, por exemplo
No seu caso você deve adequar a extração ao nome dos campos do seu formulário
Simples não é? 🙂
Formação Vibe Coding
Do Prompt ao Produto: Crie Software Real com IA
- 474 aulas
- 20 projetos
- 39h 27min
Conclusão
Neste artigo você aprendeu a como pegar dados de formulário com JavaScript
Utilizamos a classe FormData, que serve justamente para isso
Podemos trabalhar os inputs de um formulário em uma abordagem facilitada utilizando objetos e métodos
Confira nossos cursos gratuitos no Youtube, com vídeos todos os dias!
Se inscreva e ative o sininho para receber as notificações e aprender mais ainda sobre desenvolvimento web!
Veja também nosso catálogo de cursos na Udemy, todos com exercícios e projetos práticos, nas mais diversas tecnologias
O link acima contém um cupom de desconto para os cursos!
Pegando TODOS os campos do formulário de uma vez:
O get é ótimo quando tu quer um campo específico
Mas e quando o form tem dez, quinze inputs? Ficar chamando get em cada um é chato demais
A instância de FormData é iterável, então dá pra percorrer tudo de uma vez
const formData = new FormData(document.querySelector('form'))
console.log(campo, valor)
}E se tu prefere trabalhar com um objeto normal (pra mandar num JSON, por exemplo), dá pra converter em uma linha
const dados = Object.fromEntries(formData)
console.log(dados) // { name: "Matheus", email: "[email protected]" }Agora tu tem um objeto JavaScript comum, com as chaves sendo os name dos inputs
muito massa, né? 😀
Como pegar os dados no envio do formulário sem recarregar a página?
Aqui mora a pegadinha clássica
Se tu roda o código direto, ele pega os campos vazios, porque rodou antes do usuário digitar qualquer coisa
O certo é escutar o evento de envio do form e só então extrair os dados
const form = document.querySelector('form')
form.addEventListener('submit', (e) => {
e.preventDefault()
const formData = new FormData(form)
console.log(formData.get('name'))
})E o que aquele e.preventDefault() faz ali?
Ele segura o comportamento padrão do formulário, que é recarregar a página e sumir com tudo
Sem ele tu vê o console.log piscar no console e desaparecer na hora
Já me ferrei uma vez achando que o código estava quebrado, e era só isso haha
Por que meu campo volta vazio ou como null?
Tome cuidado com isso: o FormData monta a lista de campos pelo atributo name do input, e não pelo id
Se o teu input está assim, ele NÃO vai aparecer no FormData
<input type="text" id="name">O correto é ter o name no elemento
<input type="text" id="name" name="name">Outro detalhe: input desabilitado com disabled também fica de fora
Então se um campo teimar em vir vazio, olha o HTML antes de brigar com o JavaScript 🙂
E pra pegar valor de checkbox, select e campo de múltipla escolha?
O get sempre devolve o PRIMEIRO valor encontrado daquele nome
Isso resolve input de texto, email, senha, select simples e por aí vai
Mas quando tu tem vários checkboxes com o mesmo name, o certo é usar o getAll
const formData = new FormData(document.querySelector('form'))
const interesses = formData.getAll('interesses')
console.log(interesses) // um array com os marcadosO retorno vira um array, aí tu percorre normalmente
E se tu quiser só checar se um campo existe no form antes de usar, tem o has
if (formData.has('email')) {
console.log(formData.get('email'))
}Bora testar no teu form?
Perguntas frequentes sobre pegar dados de formulário com JavaScript
Dá pra pegar os dados sem usar FormData?
Dá sim, selecionando o input direto e lendo a propriedade value
const nome = document.querySelector('#name').valueFunciona bem pra um ou dois campos
Agora, em formulário grande, o FormData deixa o código MUITO mais limpo, porque ele já monta tudo pra você
Como pegar o valor de um checkbox?
Pelo elemento tu usa a propriedade checked, que devolve verdadeiro ou falso
const aceitou = document.querySelector('#termos').checkedPelo FormData, o campo só aparece se estiver marcado
O valor vem sempre como texto?
Os campos de texto vêm como string, inclusive quando o input é de número
Então se tu vai fazer conta, converte antes com Number
const idade = Number(formData.get('idade'))E arquivos, o FormData pega também?
Pega, quando o input é do tipo file o valor extraído representa o arquivo em si, não um texto simples
É justamente por isso que a instância de FormData costuma ser usada no corpo de uma requisição de upload
Preciso de alguma biblioteca pra isso?
Não, é JavaScript puro
nada de instalar pacote, é built-in mesmo 😀
E depois de extrair, como envio esses dados?
O pulo do gato é que a instância de FormData já nasce pronta pra viajar
Ou seja, tu pode mandar ela direto no corpo de uma requisição, sem transformar em nada antes
form.addEventListener('submit', async (e) => {
e.preventDefault()
const formData = new FormData(form)
await fetch('/sua-rota', {
method: 'POST',
body: formData
})
})E se a tua API espera JSON, aí sim tu converte antes com aquele Object.fromEntries que vimos lá em cima
body: JSON.stringify(Object.fromEntries(formData))Dois caminhos, mesma base 🙂
Leia também
Formações
Formação SAAS com IA
Tire usas ideias do papel criando softwares com IA, integre pagamentos e lance seu projeto!
- 291 aulas
- 18 projetos
- 24h 17min
Blog | Mais populares

As diferenças de var, let e const

Como fazer redirecionamento com PHP
Neste artigo você vai aprender a como fazer redirecionamento com PHP, utilizaremos abordagens fáceis de entender e de aplicar Fala programador(a), beleza? Bora aprender mais […]

ChatGPT: o que é, como usar, dicas e como acessar login
ChatGPT é uma ferramenta de processamento de linguagem natural (NLP) baseada na arquitetura GPT-3.5, desenvolvida pela OpenAI. Sua criação representa um marco significativo no campo […]
