Como faço para quando eu clicar no botão submit do meu formulário não dar refresh na minha página e mandar os dados para o php da mesma página com javascript puro?
Ao invés de usar isto:
<input type="submit">
<!-- ou -->
<button>Submit</button>
Use isto:
<button type="button">Submit</button>
O atributo type="button" é o que faz a mágica acontecer.
Um <input type="button"> também funciona.
A diferença é que um input só permite texto simples (que você coloca no atributo value), por exemplo, <input type="submit" value="OK"> vai mostrar um botão com o texto “OK”. O máximo que dá para fazer é estilizar este texto com CSS.
Já um button permite HTML dentro dele (ou seja, não se restringe a texto, podendo ter imagens, etc).
Eu tentei fazer isso porém quando eu faço as informações do form não vai até o php
Nesse caso vc vai ter que usar AJAX para mandar os dados.
Aqui tem um ótimo tutorial, bons estudos ![]()
Se bem que nos browsers atuais (exceto no finado Internet Explorer) seria mais recomendado usar a Fetch API. Mas ainda recomendo a leitura do link anterior sobre AJAX, para fixar bem os conceitos (já que a ideia geral é basicamente a mesma).
Mas isto é o esperado. Agora vc vai ter que implementar manualmente o comportamento desejado ao apertar o botão.
A página que o Hugo mostrou tem um exemplo completinho, segue que é sucesso.
Depois de segui-la, dá uma olhada na API Fetch, pois é o jeito mais moderno de se fazer requisições: Usando Fetch - APIs da Web | MDN
Obrigado aos dois