Bouton d'envoi HTML: valeur / texte du bouton différent?

139

Je voudrais créer un bouton d'envoi de formulaire HTML avec la valeur 'add tag' , cependant, la page Web est en suédois, donc j'aimerais avoir un texte de bouton différent .

Autrement dit, je veux avoir un bouton comme

entrez la description de l'image ici

mais je veux avoir mon code comme

if (request.getParameter(cmd).equals("add tag"))
    tags.addTag( /*...*/ );

Est-ce possible? Si c'est le cas, comment?

aioobe
la source
4
Je pense que la valeur ne devrait pas avoir d'importance. Vous devriez simplement vérifier la présence de "add_tag" dans vos données POST
greg0ire
6
J'ai lu ceci comme "Je veux que le texte de l'entrée ne soit pas pertinent pour mon traitement côté serveur" afin que lorsque vous avez plusieurs traductions pour un formulaire, vous n'obteniez pas l'une des nombreuses valeurs de texte publiées. Cela compte quand votre formulaire a plusieurs boutons d'envoi et que vous voulez faire if (request.getParameter ("submit-type"). Equals ("add-tag") ... pour voir lequel a été pressé.
ijw

Réponses:

228

C'est possible en utilisant l' buttonélément.

<button name="name" value="value" type="submit">Sök</button>

Depuis la page W3C sur button:

Les boutons créés avec l'élément BUTTON fonctionnent comme les boutons créés avec l'élément INPUT, mais ils offrent des possibilités de rendu plus riches: l'élément BUTTON peut avoir du contenu.

Pekka
la source
7
Juste une note, cela ne fonctionne pas comme annoncé sur IE6 / 7. Cet article peut corriger le problème, mais vous aurez des problèmes si vous utilisez asp.net ou un autre framework qui interdit le HTML lors de la publication: allinthehead.com/retro/330/…
ristonj
vous pouvez également simplement utiliser la propriété name qui fournit une sortie dans POST
TheSatinKnight
23

Suite à la suggestion @ greg0ire dans les commentaires:

<input type="submit" name="add_tag" value="Lägg till tag" />

Du côté de votre serveur, vous ferez quelque chose comme:

if (request.getParameter("add_tag") != null)
    tags.addTag( /*...*/ );

(Puisque je ne connais pas cette langue (java?), Il peut y avoir des erreurs de syntaxe.)

Je préférerais la <button>solution, mais elle ne fonctionne pas comme prévu sur IE <9 .

Sony Santos
la source
13

Il y a beaucoup de réponses ici expliquant ce que vous pourriez faire (j'utilise un nom de champ différent) mais la réponse simple (et encore non énoncée) à votre question est `` non '' - vous ne pouvez pas avoir un texte et une valeur différents en utilisant juste du HTML.

ijw
la source
2

Je ne sais pas si vous avez raison, mais, si je comprends bien, vous pouvez utiliser un champ caché supplémentaire avec la valeur "ajouter une balise" et laisser le bouton avoir le texte souhaité.

Flinsch
la source
3
Pas utile avec plusieurs boutons sur le même formulaire, ce qui, je pense, est le problème du PO.
ijw
Je ne vois aucune preuve de sa question selon laquelle il y a plusieurs boutons sur le même formulaire.
Darren
0

Si vous gérez "l'ajout de balises" via JScript:

<form ...>
<button onclick="...">any text you want</button>
</form>

Ou au-dessus si gérer via le rechargement de la page

Andrey Pokhilko
la source
2
Ouais, JS requis pour chaque formulaire, quelle que soit la simplicité. Bienvenue dans ASP.NET.
ijw
En tant que développeur ASP.Net, je peux le confirmer. : P En supposant que vous vivez toujours à l'époque des formulaires Web de toute façon. ASP.Net MVC est bien meilleur. Aucun état de vue, enveloppement global des formulaires, etc.
James Billingham