Pourquoi les gens utilisent-ils toujours jQuery quand ce n'est pas nécessaire?
Pourquoi les gens ne peuvent-ils pas simplement utiliser du 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
est une fonction que vous souhaitez appeler lorsque le formulaire est soumis.
À propos de EventTarget.addEventListener
, consultez cette documentation sur MDN .
Pour annuler l' submit
événement natif (empêcher l'envoi du formulaire), utilisez .preventDefault()
dans votre fonction de rappel,
document.querySelector("#myForm").addEventListener("submit", function(e){
if(!isValid){
e.preventDefault(); //stop form from submitting
}
});
Écouter l' submit
événement avec les bibliothèques
Si, pour une raison quelconque, vous avez décidé qu'une bibliothèque est nécessaire (vous en utilisez déjà une ou vous ne voulez pas gérer les problèmes entre navigateurs), voici une liste de façons d'écouter l'événement de soumission dans les bibliothèques courantes:
jQuery
$(ele).submit(callback);
Où ele
est la référence de l'élément de formulaire et callback
la référence de la fonction de rappel. Référence
<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(){ /*...*/ };
Très simple, où $scope
est la portée fournie par le cadre à l'intérieur de votre contrôleur . Référence
Réagir
<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
}
Passez simplement un gestionnaire à l' onSubmit
accessoire. Référence
Autres frameworks / bibliothèques
Reportez-vous à la documentation de votre framework.
Validation
Vous pouvez toujours faire votre validation en JavaScript, mais avec HTML5, nous avons également une validation native.
<!-- Must be a 5 digit number -->
<input type="number" required pattern="\d{5}">
Vous n'avez même pas besoin de JavaScript! Chaque fois que la validation native n'est pas prise en charge, vous pouvez utiliser un validateur JavaScript.
Démo: http://jsfiddle.net/DerekL/L23wmo1L/
document.forms['yourForm'].onsubmit = function(){}
? OuaddEventListener
?