Bonjour,
J'ai un formulaire dans lequel se trouve une liste d'objet. Sur chacun de ces objets, je peux effectuer une action du style "modifier l'objet x". J'ai donc naturellement utilisé des <button type="submit"> avec un attribut "value" différent pour chacun de mes objets:
Ceci me permet, contrairement au comportement d'un <input type="submit">, de présenter à l'utilisateur une indication plus parlante quant à l'action déclenchée qu'un nombre tout droit sorti d'une base de données.
Tout allait donc pour le mieux dans le meilleur des mondes, jusqu'à ce que par acquis de conscience, je teste mon oeuvre avec Internet Explorer, cette andouille.
Donc sachez-le, si vous utilisez plusieurs éléments <button>s de type "submit" dans un même formulaire, Internet Explorer 6 se comporte de la façon suivante :
1 - Il envoie une valeur pour tous les <button>s du formulaire, quelque soit celui que l'utilisateur a choisi d'activer. En pratique, côté serveur, vous obtenez la valeur correspondant au dernier bouton (dans l'ordre du flux HTML) du formulaire.
2 - La valeur qu'il envoie correspond au code HTML (reformatté à sa sauce) compris entre les deux balises de l'élément <button> et absolument pas, comme on s'y serait attendu, à la valeur de l'attribut "value".
Internet Explorer 7 beta 2 preview du 20 mars, n'envoie lui que la valeur du bouton effectivement utilisé pour soumettre le formulaire, mais hélas, trois fois hélas, la valeur envoyée est toujours le code HTML (toujours reformatté) compris entre les 2 balises.
Firefox et Opera réagissent comme on s'y serait attendu, à savoir qu'il envoient la valeur de l'attribut "value" du bouton utilisé pour soumettre le formulaire.
Les solutions que j'entrevois sont les suivantes :
- utiliser un <input type="image"> qui ne sert pas à cela en théorie,
- bidouiller en javascript (erk!),
- faire un lien en passant mes variables dans l'url (re-erk).
- servir un <input type="image"> à internet explorer et un <button> aux autres. (en supposant qu'IE soit le seul à avoir ce comportement.)
Quelqu'un entrevoit-il une autre solution ?
Y'a t'il d'autres navigateurs avec lesquels l'élement <button> pose ce problème ?
Que dit la spécification ? Je ne suis pas sûr qu'elle soit aussi claire au sujet de <button type="submit">, qu'à propos de son son cousin <input type="submit">.
J'ai un formulaire dans lequel se trouve une liste d'objet. Sur chacun de ces objets, je peux effectuer une action du style "modifier l'objet x". J'ai donc naturellement utilisé des <button type="submit"> avec un attribut "value" différent pour chacun de mes objets:
<form method="post" action="machin.php" ... >
...
<button type="submit" name="modifier" value="1">Modifer "gudule"</button>
...
<button type="submit" name="modifier" value="2">Modifer "truc"</button>
...
<button type="submit" name="modifier" value="3">Modifer "chose"</button>
...
</form>
Ceci me permet, contrairement au comportement d'un <input type="submit">, de présenter à l'utilisateur une indication plus parlante quant à l'action déclenchée qu'un nombre tout droit sorti d'une base de données.
Tout allait donc pour le mieux dans le meilleur des mondes, jusqu'à ce que par acquis de conscience, je teste mon oeuvre avec Internet Explorer, cette andouille.
Donc sachez-le, si vous utilisez plusieurs éléments <button>s de type "submit" dans un même formulaire, Internet Explorer 6 se comporte de la façon suivante :
1 - Il envoie une valeur pour tous les <button>s du formulaire, quelque soit celui que l'utilisateur a choisi d'activer. En pratique, côté serveur, vous obtenez la valeur correspondant au dernier bouton (dans l'ordre du flux HTML) du formulaire.
2 - La valeur qu'il envoie correspond au code HTML (reformatté à sa sauce) compris entre les deux balises de l'élément <button> et absolument pas, comme on s'y serait attendu, à la valeur de l'attribut "value".
Internet Explorer 7 beta 2 preview du 20 mars, n'envoie lui que la valeur du bouton effectivement utilisé pour soumettre le formulaire, mais hélas, trois fois hélas, la valeur envoyée est toujours le code HTML (toujours reformatté) compris entre les 2 balises.
Firefox et Opera réagissent comme on s'y serait attendu, à savoir qu'il envoient la valeur de l'attribut "value" du bouton utilisé pour soumettre le formulaire.
Les solutions que j'entrevois sont les suivantes :
- utiliser un <input type="image"> qui ne sert pas à cela en théorie,
- bidouiller en javascript (erk!),
- faire un lien en passant mes variables dans l'url (re-erk).
- servir un <input type="image"> à internet explorer et un <button> aux autres. (en supposant qu'IE soit le seul à avoir ce comportement.)
Quelqu'un entrevoit-il une autre solution ?
Y'a t'il d'autres navigateurs avec lesquels l'élement <button> pose ce problème ?
Que dit la spécification ? Je ne suis pas sûr qu'elle soit aussi claire au sujet de <button type="submit">, qu'à propos de son son cousin <input type="submit">.