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 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
function pouet() { alert("onSubmit"); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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.