Qu'on se le dise, dans un formulaire comprenant plusieurs input de type submit, il n'est pas possible de spécifier le bouton à actionner quand on appuie sur la touche entrée. Si l'on considère que les HIG de Gnome imposent d'avoir un bouton ok à droite du bouton annuler, on se retrouve avec une incompatibilité fondamentale, puisque l'action par défaut est rarement celle d'annuler la saisie que l'on vient de faire. Plusieurs solutions s'offrent dès lors à nous:
- Ignorer les HIG, solution non acceptable dans mon cas (sous peine de lynchage généralisé)
- Supprimer purement et simplement les boutons
annuler, ce qui représente une perte de fonctionnalitées trop importante dans certains cas
- Utiliser du JS, solution non acceptable vis à vis de mon challenge personnel (ne pas utiliser de JS avant que l'appli ne soit complètement fonctionnelle)
- Tricher.
J'ai donc opté pour la 4ème solution, j'ai triché. J'ai placé mes input comme le souhaitait le navigateur (ok, puis cancel), et utilisé la directive CSS direction pour réorienter le tout, ce qui donne, pour le HTML:
<fieldset class="submit">
<input type="submit" name="submit" id="ok" value="Ok" />
<input type="submit" name="submit" id="cancel" value="Cancel" />
</fieldset>
Et pour la CSS:
fieldset.submit {
direction: rtl;
}
Et le rendu final.
Problèmes connus:
Impossible d'utiliser de ponctuation dans les boutons (un point d'exclamation à la fin d'un bouton par exemple se retrouvera au début) Un fieldset.submit input { direction: ltr; } est nécessaire pour bénéficier des ponctuations au bon endroit (merci Matt.Rixx)
- Surement d'autres conséquences facheuses qui ne me sont pas encore tombées dessus :-)
Mais bon pour l'instant ça marche.