Por que as pessoas sempre usam jQuery quando não é necessário?
Por que as pessoas não podem simplesmente usar JavaScript simples?
var ele = /*Your Form Element*/;
if(ele.addEventListener){
ele.addEventListener("submit", callback, false); //Modern browsers
}else if(ele.attachEvent){
ele.attachEvent('onsubmit', callback); //Old IE
}
callback é uma função que você deseja chamar quando o formulário está sendo enviado.
Sobre EventTarget.addEventListener, confira esta documentação no MDN .
Para cancelar o submitevento nativo (impedir que o formulário seja enviado), use .preventDefault()na sua função de retorno de chamada,
document.querySelector("#myForm").addEventListener("submit", function(e){
if(!isValid){
e.preventDefault(); //stop form from submitting
}
});
Ouvindo o submitevento com bibliotecas
Se, por algum motivo, você decidiu que uma biblioteca é necessária (você já está usando uma ou não quer lidar com problemas entre navegadores), veja uma lista de maneiras de ouvir o evento de envio em bibliotecas comuns:
jQuery
$(ele).submit(callback);
Onde eleestá a referência do elemento do formulário e callbacksendo a referência da função de retorno de chamada. Referência
<iframe width="100%" height="100%" src="http://jsfiddle.net/DerekL/wnbo1hq0/show" frameborder="0"></iframe>
AngularJS (1.x)
<form ng-submit="callback()">
$scope.callback = function(){ /*...*/ };
Muito simples, onde $scopeestá o escopo fornecido pela estrutura dentro do seu controlador . Referência
Reagir
<form onSubmit={this.handleSubmit}>
class YourComponent extends Component {
// stuff
handleSubmit(event) {
// do whatever you need here
// if you need to stop the submit event and
// perform/dispatch your own actions
event.preventDefault();
}
// more stuff
}
Basta passar um manipulador para o onSubmitsuporte. Referência
Outras estruturas / bibliotecas
Consulte a documentação da sua estrutura.
Validação
Você sempre pode fazer sua validação em JavaScript, mas com HTML5 também temos validação nativa.
<!-- Must be a 5 digit number -->
<input type="number" required pattern="\d{5}">
Você nem precisa de JavaScript! Sempre que a validação nativa não for suportada, você poderá fazer o fallback para um validador JavaScript.
Demonstração: http://jsfiddle.net/DerekL/L23wmo1L/
document.forms['yourForm'].onsubmit = function(){}? OuaddEventListener?