Eh bien, j'essaie de soumettre un formulaire en appuyant sur Entrée mais sans afficher de bouton de soumission. Je ne veux pas entrer dans JavaScript si possible car je veux que tout fonctionne sur tous les navigateurs (la seule façon JS que je connaisse est avec les événements).
En ce moment, le formulaire ressemble à ceci:
<form name="loginBox" target="#here" method="post">
<input name="username" type="text" /><br />
<input name="password" type="password" />
<input type="submit" style="height: 0px; width: 0px; border: none; padding: 0px;" hidefocus="true" />
</form>
Ce qui fonctionne plutôt bien. Le bouton d'envoi fonctionne lorsque l'utilisateur appuie sur Entrée, et le bouton ne s'affiche pas dans Firefox, IE, Safari, Opera et Chrome. Cependant, je n'aime toujours pas la solution car il est difficile de savoir si elle fonctionnera sur toutes les plateformes avec tous les navigateurs.
Quelqu'un peut-il suggérer une meilleure méthode? Ou est-ce à peu près aussi bon que possible?
Réponses:
Essayer:
Cela poussera le bouton waaay vers la gauche, hors de l'écran. La bonne chose avec ceci est que vous obtiendriez une dégradation gracieuse lorsque CSS est désactivé.
Mise à jour - Solution de contournement pour IE7
Comme suggéré par Bryan Downing + avec
tabindex
pour empêcher l'onglet d'atteindre ce bouton (par Ates Goral):la source
position: absolute; width: 1px; height: 1px; left: -9999px;
tabindex="-1"
Je pense que vous devriez suivre la route Javascript, ou du moins je le ferais:
la source
keydown
partirkeypress
d' un soutien plus large, mais vous devez également ajoutere.preventDefault();
avantif
si vous espérez soutenir Chrome..on('keypress'...)
place. Les documents pour.on()
ressembler à cela font l'.preventDefault()
appel pour vous.Avez-vous essayé cela?
Étant donné que la plupart des navigateurs comprennent
visibility:hidden
et que cela ne fonctionne pas vraimentdisplay:none
, je suppose que cela devrait aller, cependant. Je ne l'ai pas vraiment testé moi-même, donc CMIIW.la source
visibility: hidden
: comme vous pouvez le lire dans w3schools , la visibilité: aucune n'affecte toujours la mise en page. Si vous voulez éviter cet espace, la solution au positionnement absolu me semble meilleure.<input type="submit" style="visibility: hidden; position: absolute;" />
position: absolute; left: -100px; width: 1px; height: 1px;
Une autre solution sans le bouton soumettre:
HTML
jQuery
la source
Pour quiconque examinera cette réponse à l'avenir, HTML5 implémente un nouvel attribut pour les éléments de formulaire
hidden
, qui s'appliquera automatiquementdisplay:none
à votre élément.par exemple
la source
Utilisez le code suivant, cela a résolu mon problème dans les 3 navigateurs (FF, IE et Chrome):
Ajoutez la ligne ci-dessus comme première ligne de votre code avec la valeur appropriée de nom et de valeur.
la source
Au lieu du hack que vous utilisez actuellement pour masquer le bouton, il serait beaucoup plus simple de définir
visibility: collapse;
l'attribut style. Cependant, je recommanderais toujours d'utiliser un peu de Javascript simple pour soumettre le formulaire. Pour autant que je sache, le soutien à de telles choses est omniprésent de nos jours.la source
Définissez simplement l'attribut caché sur true:
la source
La façon la plus élégante de le faire est de conserver le bouton de soumission, mais définissez sa bordure, son remplissage et sa taille de police sur 0.
Cela rendra les dimensions du bouton 0x0.
Vous pouvez l'essayer vous-même et en définissant un contour pour l'élément, vous verrez un point, qui est la bordure extérieure "entourant" l'élément 0x0 px.
Pas besoin de visibilité: caché, mais si cela vous fait dormir la nuit, vous pouvez aussi le jeter dans le mix.
JS Fiddle
la source
IE ne permet pas d'appuyer sur la touche ENTRÉE pour la soumission du formulaire si le bouton d'envoi n'est pas visible et que le formulaire comporte plusieurs champs. Donnez-lui ce qu'il veut en fournissant une image transparente de 1 x 1 pixel comme bouton d'envoi. Bien sûr, cela prendra un pixel de la mise en page, mais regardez ce que vous devez faire pour le cacher.
la source
Voici ma solution, testée dans Chrome, Firefox 6 et IE7 +:
la source
Cela fonctionne très bien et c'est la version la plus explicite de ce que vous essayez de réaliser.
Notez qu'il existe une différence entre
display:none
etvisibility:hidden
pour d'autres éléments de formulaire.la source
Solution HTML5
la source
la manière la plus simple
la source
Pour ceux qui ont des problèmes avec IE et pour les autres aussi.
la source
float: left;
, une fois retiré, il se soumet.Vous pouvez aussi essayer ceci
Vous pouvez inclure une image avec largeur / hauteur = 0 px
la source
Je travaille avec un tas de cadres d'interface utilisateur. Beaucoup d'entre eux ont une classe intégrée que vous pouvez utiliser pour masquer visuellement des choses.
Amorcer
Matériel angulaire
Les esprits brillants qui ont créé ces cadres ont défini ces styles comme suit:
la source
Je l'ai ajouté à une fonction sur le document prêt. S'il n'y a pas de bouton d'envoi sur le formulaire (tous mes formulaires de boîte de dialogue Jquery n'ont pas de boutons d'envoi), ajoutez-le.
la source
la source
J'ai utilisé:
et:
dans le fichier .css. Cela a fonctionné comme par magie pour moi aussi. :)
la source