Pourquoi les gens utilisent-ils toujours jQuery alors que ce n'est pas nécessaire ?
Pourquoi les gens ne peuvent-ils pas utiliser un simple JavaScript ?
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 voulez appeler lorsque le formulaire est soumis.
À propos de EventTarget.addEventListener
, consultez cette documentation sur MDN .
Pour annuler le natif submit
(empêcher l'envoi du formulaire), utilisez l'événement .preventDefault()
dans votre fonction de rappel,
document.querySelector("#myForm").addEventListener("submit", function(e){
if(!isValid){
e.preventDefault(); //stop form from submitting
}
});
À l'écoute de la submit
événement avec des bibliothèques
Si, pour une raison ou une autre, vous avez décidé qu'une bibliothèque est nécessaire (vous en utilisez déjà une ou vous ne voulez pas vous occuper des problèmes liés aux navigateurs croisés), voici une liste des moyens d'écouter l'événement submit dans les bibliothèques courantes :
-
jQuery
$(ele).submit(callback);
Où ele
est la référence de l'élément de formulaire, et callback
étant 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
-
React
<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
}
Il suffit de passer un gestionnaire à la onSubmit
prop. 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 aussi la validation native.
<!-- Must be a 5 digit number -->
<input type="number" required pattern="\d{5}">
Vous n'avez même pas besoin de JavaScript ! Lorsque la validation native n'est pas prise en charge, vous pouvez vous rabattre sur un validateur JavaScript.
Démonstration : http://jsfiddle.net/DerekL/L23wmo1L/
11 votes
Pourquoi pas ?
document.forms['yourForm'].onsubmit = function(){}
? OuaddEventListener
?3 votes
Voulez-vous vraiment vérifier si le bouton d'envoi a été cliqué, ou voulez-vous vérifier quand l'utilisateur soumet le formulaire (ce qu'il peut faire en cliquant sur le bouton ou en appuyant sur Entrée dans l'un des champs) ?