Puis-je faire en sorte qu'un bouton ne soumette pas un formulaire ?

J'ai un formulaire, avec 2 boutons

<a href="index.html"><button>Cancel changes</button></a>

<button type="submit">Submit</button>

J'utilise le bouton de jQuery UI sur eux aussi, simplement comme ceci

$('button').button();

Cependant, le premier bouton soumet également le formulaire. J'aurais pensé que s'il n'avait pas le type="submit", il ne le ferait pas.

Je pourrais évidemment faire ceci

$('button[type!=submit]').click(function(event) { event.stopPropagation(); });

Mais existe-t-il un moyen d'empêcher ce bouton retour de soumettre le formulaire sans intervention de JavaScript ?

Pour être honnête, j'ai utilisé un bouton uniquement pour pouvoir le styliser avec jQuery UI. J'ai essayé d'appeler button() sur le lien et cela n'a pas fonctionné comme prévu (c'était plutôt laid !).

Solution

La valeur par défaut de l'attribut [type des éléments button][1] est "submit&quot ;. Donnez-lui la valeur type="button" pour produire un bouton qui ne soumet pas le formulaire.

Submit

Selon les termes de la [norme HTML][1] : "ne fait rien.&quot ;

[1] : https://html.spec.whatwg.org/multipage/form-elements.html#attr-button-type

Commentaires (5)

L'élément button a un type par défaut de submit.

Vous pouvez faire en sorte qu'il ne fasse rien en lui attribuant le type button:

Cancel changes
Commentaires (2)

Utilisez simplement le bon vieux HTML:

<input type="button" value="Submit" />

Enveloppez-le comme sujet d'un lien, si vous le souhaitez:

<a href="http://somewhere.com"><input type="button" value="Submit" /></a>

Ou si vous décidez que vous voulez que le javascript fournisse une autre fonctionnalité:

<input type="button" value="Cancel" onclick="javascript: someFunctionThatCouldIncludeRedirect();"/>
Commentaires (12)