J'ai un formulaire. En dehors de ce formulaire, j'ai un bouton. Un simple bouton, comme celui-ci:
<button>My Button</button>
Néanmoins, lorsque je clique dessus, il soumet le formulaire. Voici le code:
<form id="myform">
<input />
</form>
<button>My Button</button>
Tout ce que ce bouton devrait faire, c'est du JavaScript. Mais même quand il ressemble au code ci-dessus, il soumet le formulaire. Lorsque je change le bouton de balise pour s'étendre, cela fonctionne parfaitement. Mais malheureusement, ce doit être un bouton. Existe-t-il un moyen d'empêcher ce bouton d'envoyer le formulaire? Comme par exemple
<button onclick="document.getElementById('myform').doNotSubmit();">My Button</button>
javascript
html
arik
la source
la source
button
soittype=submit
, aucun formulaire ne doit être soumis lorsque l'button
élément est en dehors de tout formulaire. À moins qu'une démonstration réelle (un exemple de document, l'identification d'un navigateur et une description des observations montrant qu'un formulaire est soumis) puisse être donnée, cette question devrait être classée comme non reproductible. L'utilisationtype=button
est une bonne pratique, mais cela ne rend pas le problème réel.Réponses:
Je pense que c'est la petite particularité la plus agaçante du HTML ... Ce bouton doit être de type "bouton" pour ne pas se soumettre.
Mise à jour du 5 février 2019: selon le standard HTML Living (ainsi que la spécification HTML 5 ):
la source
to use <button>
<button>
pas correctement les s dans certains cas. De plus,<button>
n'est pas compatible à 100% entre les navigateurs dans la mesure où différents navigateurs peuvent soumettre des valeurs différentes pour les mêmes<button>
lorsqu'ils sont utilisés dans un formulaire.type
attribut dans une<button>
balise estsubmit
. Lorsqu'il est modifié entype=button
, le<button>
ne reçoit aucun comportement par défaut. Voirtype
attribut ici: developer.mozilla.org/en-US/docs/Web/HTML/Element/button<button type='submit'>
C'est trop difficile pour moi haha. Quoi qu'il en soit, votre réponse fonctionne très bien!return false;
à la fin du gestionnaire onclick fera le travail. Cependant, il est préférable d'ajouter simplementtype="button"
à<button>
- de cette façon, il se comporte correctement même sans JavaScript.la source
return false;
ne fonctionne pas dans tous les scénarios, alorstype="Button"
que. Même avec JavaScript activé.Dave Markle a raison. Depuis le site Web de W3School :
En d'autres termes, le navigateur que vous utilisez suit les spécifications du W3C.
la source
Par défaut, les boutons html soumettent un formulaire.
En d'autres termes, le type de bouton est "soumettre" par défaut
Pour en savoir plus, consultez les informations du Mozilla Developer Network sur les boutons: https://developer.mozilla.org/en/docs/Web/HTML/Element/button
la source
Il est recommandé de ne pas utiliser la
<Button>
balise. Utilisez le<Input type='Button' onclick='return false;'>
plutôt balise. (L'utilisation du "return false" ne doit en effet pas envoyer le formulaire.)Quelques documents de référence
la source
<input type="button" />
, et c'est suffisant pourreturn false;
- il n'est pas nécessaire de faire les deux.Pour des raisons d'accessibilité, je n'ai pas pu le retirer avec plusieurs
type=submit
boutons. La seule façon de travailler en mode natif avec unform
avec plusieurs boutons, mais SEULEMENT on peut soumettre le formulaire en appuyant sur laEnter
touche est de s'assurer que l'un d'eux est detype=submit
tandis que d'autres sont dans un autre type tel quetype=button
. De cette façon, vous pouvez bénéficier de la meilleure expérience utilisateur en traitant un formulaire sur un navigateur en termes de prise en charge du clavier.la source
Une autre option qui a fonctionné pour moi était d'ajouter onsubmit = "return false;" à la balise de formulaire.
Sémantiquement, ce n'est probablement pas une aussi bonne solution que les méthodes ci-dessus pour changer le type de bouton, mais cela semble être une option si vous voulez juste un élément de formulaire qui ne sera pas soumis.
la source