Pour faire des boutons, il y a une balise sympa en HTML : <button>. On peut s'en servir notamment pour les boutons d'envoi de formulaire :

 <button type="submit" name="validation" value="save">Enregistrer</button>

Comme vous le voyez, l'avantage par rapport à un <input type="submit">, c'est que l'on peut spécifier une valeur, que l'on recevra coté serveur. Et au niveau du libéllé, on peut en principe mettre n'importe quoi : du texte, d'autres balises HTML... C'est particulièrement sympa quand vous avez plusieurs boutons d'envoi :

 <button type="submit" name="validation" value="save">Enregistrer</button>
 <button type="submit" name="validation" value="prev">Prévisualiser</button>

Coté serveur, en PHP par exemple, on a juste à tester la variable $_POST['validation'] par rapport aux valeurs "save" et "prev", afin de savoir quoi faire.

J'avais donc choisi d'utiliser ces boutons dans jForms, le système de formulaire de Jelix. Et ça fonctionne parfaitement dans Firefox, Konqueror, IE7 et certainement Opera. Mais je viens de faire machine arrière, à cause de bugs dans IE6 que l'on m'a rapporté.

Le premier bug, c'est que IE6 n'envoie pas la valeur que l'on met dans l'attribut value, mais le contenu de la balise button. Elle a donc le même fonctionnement que input dans IE6. C'est un bug que j'ai pu contourner dans jForms. Mais IE6 n'avait pas fini de me donner du fil à retordre.

En effet, quand plusieurs boutons ont le même nom, il renvoi toujours le libellé du dernier bouton, quel que soit le bouton sur lequel on clique ! Je me suis alors dit, bon, je ne vais pas appeler les boutons avec le même nom, et je vais faire du bidouillage dans jforms pour que dans jelix, on ait les valeurs sous un même nom. Mais voilà, peine perdue : quand on clique sur un bouton submit, IE6 envoit non seulement le libellé de ce bouton, mais aussi les libellés de tout les autres boutons submit qui n'ont pas le même nom ! Il est comique IE6 n'est ce pas ?

Conclusion : la balise <button> est inutilisable à cause de IE6, car encore largement répandu. J'ai donc à regret mis des <input type="submit"> dans jForms :-(