Comment puis-je définir le focus sur le premier élément de saisie dans un formulaire HTML, indépendant de la carte d'identité?
Est-il un moyen simple de définir le focus (curseur de saisie) d'une page web sur le premier élément d'entrée (zone de texte, liste déroulante, ...) sur le chargement de la page sans avoir à connaître l'id de l'élément?
Je voudrais la mettre en œuvre comme un script commun pour toutes mes pages/les formes de mon application web.
- REMARQUE si le formulaire est placé en bas de page, ainsi que l'utilisateur a à faire défiler la page pour voir le formulaire,en définissant l'accent sera automatiquement défiler en bas de la page comme un point d'ancrage ferait. Ce n'est pas très bonne cause à l'utilisateur arriver à une telle page verrait immédiatement défile vers le bas de la forme de la position. Je l'ai testé sur Safari et FF (IE7 ne pas effectuer le défilement des pages).
- Mon application web est structuré de façon à ce que chaque page a son boîtes de saisie en haut de la fenêtre.
- que faire si l'utilisateur redimensionné la fenêtre du navigateur hauteur à quelque chose de plus petit que 768px. Page faites défiler jusqu'à l'endroit où vous mettez le focus. De toute façon, je voulais seulement vous avertir au cas où vous ne saviez pas à propos de ces problèmes mineurs, je ne savais pas non plus avant de faire quelques tests.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez également essayer de jQuery en fonction de la méthode:
$(':input[type!=hidden]:first').focus()
Bien que cela ne répond pas à la question (nécessitant un script commun), je pensais qu'il pourrait être utile pour les autres de savoir que le HTML5 introduit le "autofocus" attribut:
Plongez dans HTML5 a plus d'informations.
autofocus
avec aucune valeur surspring:form
.autofocus="autofocus"
fonctionne très bien, cependant. Merci, @Jacob.Ce peut être affiné à l'aide d'une boucle par exemple. ne pas se concentrer sur certains types de terrain, les handicapés champs et ainsi de suite. Mieux peut-être d'ajouter une class="autofocus" pour le domaine vous fait ne voulez concentré, et de la boucle sur les formes[i].les éléments[j] à la recherche pour que className.
De toute façon: il n'est pas normalement une bonne idée de le faire sur chaque page. Lorsque vous vous concentrez d'une entrée de l'utilisateur perd la possibilité de par exemple. faites défiler la page à partir du clavier. En cas d'imprévu, cela peut être gênant, de sorte que seule l'auto-focus lorsque vous êtes sûr que l'utilisation du champ de formulaire va être ce que l'utilisateur veut faire. c'est à dire. si vous êtes à la Google.
Le plus complet du jQuery expression que j'ai trouvé de travail est (grâce à l'aide de plus de ici)
Si vous êtes à l'aide de la Prototype framework JavaScript vous pouvez ensuite utiliser la focusFirstElement méthode:
Il y a une écriture-up ici que l'on peut utiliser: Définir le Focus à la Première Entrée sur la Page Web
Vous avez également besoin de passer tout caché entrées.
while
déclaration?Mettre ce code à la fin de votre
body
tag mettra l'accent de la première visible, non caché, activé l'élément sur l'écran automatiquement. Il prendra en charge la plupart des cas, je peux venir avec un court préavis.Essayé des tas de réponses ci-dessus et ils n'ont pas de travail. Trouvé à: http://www.kolodvor.net/2008/01/17/set-focus-on-first-field-with-jquery/#comment-1317
Merci Kolodvor.
Cela devient la première visible entrée commune, y compris ces zones de texte et des listes de sélection. Cela assure également qu'ils ne sont pas cachés, les personnes handicapées ou en lecture seule. il permet également une cible div, que j'utilise dans mon logiciel (c'est à dire, la première entrée à l'intérieur de cette forme).
Je suis en utilisant ceci:
Pour ceux qui utilisent JSF2.2+ et ne peut pas passer de l'autofocus comme un attribut sans valeur, utilisez ceci:
Et l'ajouter à l'espace de noms p (Également souvent utilisé pt. Tout ce que vous voulez).
Avec
AngularJS
:Cela inclut les textareas et exclut les boutons radio
Vous devriez être en mesure d'utiliser clientHeight au lieu de vérifier l'attribut d'affichage, car un parent pourrait se cacher cet élément:
Sans tiers libs, utilisez quelque chose comme
Assurez-vous d'examiner tous les éléments de formulaire balises, la règle dissimulés/désactivé, comme dans d'autres réponses, et ainsi de suite..
sans jquery, par exemple, régulièrement javascript:
fonctionne sur Safari mais pas Chrome 75 (avril 2019)