Certains l'auront sans doute déjà remarqué : les navigateurs ont tendance à ne pas faire d'appel à la fonction "onsubmit" d'un formulaire lorsque la soumission est déclenchée programmatiquement. Par exemple :
function pouet() { alert("onSubmit"); }
1 2 3 4 5 6 7
| <form onsubmit="pouet();">
...
<input/>
...
<button type="submit">1</button>
<button type="button" onclick="document.forms[0].submit();">2</button>
</form> |
Dans l'exemple ci-dessus, seul le bouton "1" déclenchera l'affichage du message avant que le formulaire soit soumis. Le deuxième aura pour effet la soumission du formulaire uniquement.
Voici un petit correctif pour faire en sorte que la fonction "onsubmit" soit appelée dans tous les cas :
1 2 3 4 5 6 7
| var form = document.forms[0]; // ou autre...
form.originalSubmit = form.originalSubmit || form.submit;
form.submit = function() {
if(this.onsubmit()) {
this.originalSubmit();
}
}; |
Avec ça, les deux boutons déclenchent bien l'affichage du message à l'écran avant de soumettre le formulaire.
Partager