Supposons que vous créez un assistant dans un formulaire HTML. Un bouton remonte et un avance. Étant donné que le bouton de retour apparaît en premier dans le balisage lorsque vous appuyez sur Enter, il utilisera ce bouton pour soumettre le formulaire.
Exemple:
<form>
<!-- Put your cursor in this field and press Enter -->
<input type="text" name="field1" />
<!-- This is the button that will submit -->
<input type="submit" name="prev" value="Previous Page" />
<!-- But this is the button that I WANT to submit -->
<input type="submit" name="next" value="Next Page" />
</form>
Je voudrais décider quel bouton est utilisé pour envoyer le formulaire lorsqu'un utilisateur appuie sur Enter. De cette façon, lorsque vous appuyez sur Enterl'assistant, vous passez à la page suivante, pas à la précédente. Devez-vous utiliser tabindex
pour ce faire?
Modifiez le type de bouton précédent en un bouton comme celui-ci:
Maintenant, le bouton Suivant serait la valeur par défaut, et vous pourriez également y ajouter l'
default
attribut afin que votre navigateur le surligne comme suit:la source
default
attribut parlez-vous? Il n'y a pas d'attribut "par défaut", qui serait valide: w3.org/html/wg/drafts/html/master/… (pas en HTML5, HTML 4.01 Transitional / Strict, XHTML 1.0 Strict). Et je ne vois pas pourquoi changer le type d'entrée desubmit
àbutton
serait mieux. Vous pouvez avoir plusieurs éléments d'entrée de type d'envoi dans un seul formulaire sans problème. Je ne comprends pas vraiment pourquoi cette réponse est si positive.default
attribut est un attribut global; attribut énuméré .. qui est lié aux états d'énumération: w3.org/html/wg/drafts/html/master/… . à part ce point .. l'aspect bouton de cette réponse n'est pas une réponse .. c'est une " suggestion conditionnelle " ou une requête ( question elle-même ).type="button"
ne soumet pas le formulaire, letype="submit"
fait, mais changer le type de ces boutons n'est certainement pas une solution, car ces boutons devraient fondamentalement se comporter de la même manière - la question du PO était de savoir comment faire du bouton "Suivant" le par défaut pour avoir appuyé sur la touche Entrée. Et il y a une solution possible dans la réponse acceptée.default
attribut valide pour lesinput
balises (comme je l'ai dit plus tôt) en HTML, et les navigateurs (populaires) ne mettront PAS en surbrillance le bouton qui a cet attribut, ce qui signifie qu'il n'y a pas d'implémentation non standard de cet attribut - donc je ne sais toujours pas de quoi parlait @Wally Lawless, et pourquoi cette réponse est tellement surfaite. Il n'y a qu'un seuldefault
attribut valide introduit en HTML5, MAIS uniquement pour la<track>
balise: developer.mozilla.org/en-US/docs/Web/HTML/Element/trackDonnez à vos boutons d'envoi le même nom que celui-ci:
Lorsque l'utilisateur appuie sur Enteret que la demande est envoyée au serveur, vous pouvez vérifier la valeur de
submitButton
votre code côté serveur qui contient une collection dename/value
paires de formulaires . Par exemple, dans ASP Classic :Référence: utilisation de plusieurs boutons d'envoi sur un même formulaire
la source
Si le fait que le premier bouton est utilisé par défaut est cohérent entre les navigateurs, mettez-les dans le bon sens dans le code source, puis utilisez CSS pour changer leur position apparente.
float
les gauche et droite pour les changer visuellement, par exemple.la source
Parfois, la solution fournie par @palotasb n'est pas suffisante. Il existe des cas d'utilisation où, par exemple, un bouton de soumission "Filtre" est placé au-dessus de boutons comme "Suivant et Précédent". J'ai trouvé une solution de contournement pour cela: copiez le bouton d'envoi qui doit agir comme bouton d'envoi par défaut dans une div cachée et placez-le à l'intérieur du formulaire au-dessus de tout autre bouton d'envoi. Techniquement, il sera soumis par un bouton différent en appuyant sur Entrée qu'en cliquant sur le bouton Suivant visible. Mais comme le nom et la valeur sont les mêmes, il n'y a aucune différence dans le résultat.
la source
J'utiliserais JavaScript pour envoyer le formulaire. La fonction serait déclenchée par l'événement OnKeyPress de l'élément de formulaire et détecterait si leEnter clé a été sélectionnée. Si tel est le cas, il soumettra le formulaire.
Voici deux pages qui expliquent comment procéder: 1 , 2 . Sur la base de ceux-ci, voici un exemple d'utilisation (basé sur ici ):
la source
Si vous voulez vraiment que cela fonctionne comme une boîte de dialogue d'installation, concentrez-vous simplement sur le bouton "Suivant" OnLoad.
De cette façon, si l'utilisateur frappe Return, le formulaire se soumet et avance. S'ils veulent revenir en arrière, ils peuvent Tabappuyer ou cliquer sur le bouton.
la source
Cela ne peut pas être fait avec du HTML pur. Vous devez compter sur JavaScript pour cette astuce.
Cependant, si vous placez deux formulaires sur la page HTML, vous pouvez le faire.
Form1 aurait le bouton précédent.
Form2 aurait toutes les entrées utilisateur + le bouton suivant.
Lorsque l'utilisateur appuie Entersur Form2, le bouton Soumettre suivant se déclenche.
la source
Vous pouvez le faire avec CSS.
Mettez les boutons dans le balisage avec le
Next
bouton en premier, puis lePrev
bouton après.Utilisez ensuite CSS pour les positionner de manière à apparaître comme vous le souhaitez.
la source
Cela fonctionne sans JavaScript ni CSS dans la plupart des navigateurs:
Firefox, Opera, Safari et Google Chrome fonctionnent tous.
Comme toujours, Internet Explorer est le problème.
Cette version fonctionne lorsque JavaScript est activé:
La faille de cette solution est donc:
La page précédente ne fonctionne pas si vous utilisez Internet Explorer avec JavaScript désactivé.
Attention, le bouton retour fonctionne toujours!
la source
Si vous avez plusieurs boutons actifs sur une page, vous pouvez faire quelque chose comme ceci:
Marquez le premier bouton que vous souhaitez déclencher sur la Entertouche comme le bouton par défaut sur le formulaire. Pour le deuxième bouton, associez-le auBackspace bouton du clavier. Le Backspacecode d'événement est 8.
la source
Changer l'ordre des onglets devrait être tout ce qu'il faut pour y parvenir. Rester simple.
Une autre option simple serait de placer le bouton de retour après le bouton d'envoi dans le code HTML mais de le faire flotter vers la gauche pour qu'il apparaisse sur la page avant le bouton d'envoi.
la source
Conservez le nom de tous les boutons d'envoi de la même manière - "précédent".
La seule différence est la
value
attribut avec des valeurs uniques. Lorsque nous créons le script, ces valeurs uniques nous aideront à déterminer lequel des boutons de soumission a été enfoncé.Et écrivez le codage suivant:
la source
name="perv"
?Une autre option simple serait de placer le bouton de retour après le bouton d'envoi dans le code HTML, mais de le faire flotter vers la gauche, afin qu'il apparaisse sur la page avant le bouton d'envoi.
Changer l'ordre des onglets devrait être tout ce qu'il faut pour y parvenir. Rester simple.
la source
La première fois que je me suis heurté à cela, j'ai trouvé un hack onclick () / JavaScript lorsque les choix ne sont pas précédents / suivants que j'aime toujours pour sa simplicité. Ça va comme ça:
Lorsque l'un des boutons de soumission est cliqué, il stocke l'opération souhaitée dans un champ caché (qui est un champ de chaîne inclus dans le modèle auquel le formulaire est associé) et soumet le formulaire au contrôleur, qui prend toutes les décisions. Dans le contrôleur, vous écrivez simplement:
Vous pouvez également resserrer légèrement cela en utilisant des codes d'opération numériques pour éviter l'analyse de chaîne, mais à moins que vous ne jouiez avec des énumérations, le code est moins lisible, modifiable et auto-documenté et l'analyse est triviale, de toute façon.
la source
Depuis https://html.spec.whatwg.org/multipage/forms.html#implicit-submission
Avoir l'entrée suivante être type = "soumettre" et changer l'entrée précédente en type = "bouton" devrait donner le comportement par défaut souhaité.
la source
Voici ce que j'ai essayé:
if
déclaration qui fera l'action requise si l'un des boutons est cliqué.En PHP,
la source
Je suis tombé sur cette question en essayant de trouver une réponse à essentiellement la même chose, uniquement avec les contrôles ASP.NET, lorsque j'ai compris que le bouton ASP avait une propriété appelée
UseSubmitBehavior
qui vous permet de définir celle qui soumet.Juste au cas où quelqu'un chercherait le moyen du bouton ASP.NET pour le faire.
la source
Avec JavaScript (ici jQuery), vous pouvez désactiver le bouton prev avant de soumettre le formulaire.
la source
Essaye ça..!
la source
J'ai résolu un problème très similaire de cette façon:
Si JavaScript est activé (dans la plupart des cas de nos jours), tous les boutons de soumission sont " dégradés " en boutons au chargement de la page via JavaScript (jQuery). Les événements de clic sur les boutons tapés sur le bouton " dégradé " sont également gérés via JavaScript.
Si JavaScript n'est pas activé, le formulaire est envoyé au navigateur avec plusieurs boutons d'envoi. Dans ce cas, appuyer Entersur un
textfield
dans le formulaire soumettra le formulaire avec le premier bouton au lieu de la valeur par défaut , mais au moins le formulaire est toujours utilisable: vous pouvez soumettre avec les boutons précédent et suivant .Exemple de travail:
la source
Vous pouvez utiliser
Tabindex
pour résoudre ce problème. Changer également l'ordre des boutons serait un moyen plus efficace d'y parvenir.Modifiez l'ordre des boutons et ajoutez des
float
valeurs pour leur affecter la position souhaitée que vous souhaitez afficher dans votreHTML
vue.la source
En utilisant l'exemple que vous avez donné:
Si vous cliquez sur "Page précédente", seule la valeur de "prev" sera soumise. Si vous cliquez sur «Page suivante», seule la valeur de «Suivant» sera soumise.
Si toutefois vous appuyez sur Enter quelque part sur le formulaire, ni "précédent" ni "suivant" ne seront soumis.
Donc, en utilisant un pseudocode, vous pouvez faire ce qui suit:
la source