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 jQuery UI sur eux aussi, simplement comme ceci
$('button').button();
Cependant, le premier bouton envoie également le formulaire. J'aurais pensé que si ce n'était pas le cas type="submit"
, ce ne serait pas le cas.
Évidemment, je pourrais faire ça
$('button[type!=submit]').click(function(event) { event.stopPropagation(); });
Mais existe-t-il un moyen d'empêcher ce bouton de retour de soumettre le formulaire sans intervention 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 (avait l'air assez moche!).
<button type="button">
pour celui qui ne soumet pas le formulaire et<input type="submit">
pour l'autre. Ensuite, attrapez-le avec jquery$('#formID').submit(function(e){});
Réponses:
La valeur par défaut de l'
type
attribut desbutton
éléments est "soumettre". Réglez-le surtype="button"
pour produire un bouton qui ne soumet pas le formulaire.Pour reprendre les termes de la norme HTML : "Ne fait rien".
la source
L'
button
élément a un type par défaut desubmit
.Vous ne pouvez rien faire en définissant un type de
button
:la source
Utilisez simplement du bon vieux HTML:
Enveloppez-le comme le sujet d'un lien, si vous le souhaitez:
Ou si vous décidez que vous souhaitez que javascript fournisse d'autres fonctionnalités:
la source
<input type="button" />
Button
est un conteneur en HTML. Cela vous permet de placer des choses comme des images ou des tableaux (vous ne savez pas pourquoi vous le feriez, mais vous le pourriez), etc. alors queinput
cela ne prend pas en charge cela. Il y a une différence entre les deux, et chacun a son cas d'utilisation approprié.la source
Honnêtement, j'aime les autres réponses. Facile et pas besoin d'entrer dans JS. Mais j'ai remarqué que vous posiez des questions sur jQuery. Donc, par souci d'exhaustivité, dans jQuery si vous retournez false avec le gestionnaire .click (), cela annulera l'action par défaut du widget.
Voir ici pour un exemple (et plus de goodies, aussi). Voici également la documentation .
en un mot, avec votre exemple de code, procédez comme suit:
Comme avantage supplémentaire, avec cela, vous pouvez vous débarrasser de la balise d'ancrage et simplement utiliser le bouton.
la source
e.preventDefault()
ne fait rien pour arrêter la soumission (là où elle commencefunction(e)
).Sans définir l'
type
attribut, vous pouvez également revenirfalse
de votreOnClick
gestionnaire et déclarer l'onclick
attribut commeonclick="return onBtnClick(event)"
.la source
Oui, vous pouvez faire en sorte qu'un bouton ne soumette pas de formulaire en ajoutant un attribut de type de bouton de valeur:
<button type="button"><button>
la source
la source