¿Por qué la gente siempre usa jQuery cuando no es necesario?
¿Por qué la gente no puede usar JavaScript simple?
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
es una función a la que desea llamar cuando se envía el formulario.
Acerca de EventTarget.addEventListener
, consulte esta documentación en MDN .
Para cancelar el submit
evento nativo (evitar que se envíe el formulario), use .preventDefault()
en su función de devolución de llamada,
document.querySelector("#myForm").addEventListener("submit", function(e){
if(!isValid){
e.preventDefault(); //stop form from submitting
}
});
Escuchando el submit
evento con bibliotecas
Si por alguna razón ha decidido que una biblioteca es necesaria (ya está usando una o no quiere lidiar con problemas entre navegadores), aquí hay una lista de formas de escuchar el evento de envío en bibliotecas comunes:
jQuery
$(ele).submit(callback);
¿Dónde ele
está la referencia del elemento de formulario y callback
la referencia de la función de devolución de llamada? Referencia
<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(){ /*...*/ };
Muy sencillo, ¿dónde $scope
está el alcance proporcionado por el marco dentro de su controlador ? Referencia
Reaccionar
<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
}
Simplemente pase un controlador al onSubmit
accesorio. Referencia
Otros marcos / bibliotecas
Consulte la documentación de su marco.
Validación
Siempre puede hacer su validación en JavaScript, pero con HTML5 también tenemos validación nativa.
<!-- Must be a 5 digit number -->
<input type="number" required pattern="\d{5}">
¡Ni siquiera necesitas JavaScript! Siempre que la validación nativa no sea compatible, puede recurrir a un validador de JavaScript.
Demostración: http://jsfiddle.net/DerekL/L23wmo1L/
document.forms['yourForm'].onsubmit = function(){}
? OaddEventListener
?