207 votes

$.focus() ne fonctionne pas

Le site Dernier exemple de l'utilisation de jQuery focus() documentation États

$('#id').focus()

devrait rendre l'entrée focalisée (active). Je n'arrive pas à le faire fonctionner.

Même dans la console de ce site, je l'essaie pour la boîte de recherche.

$('input[name="q"]').focus()

et je n'obtiens rien. Vous avez une idée ?

2 votes

Pouvez-vous nous montrer votre code ?

0 votes

Il faudra en savoir plus, car cela fonctionne bien pour moi : jsfiddle.net/G7hwR/1 il suffit de cliquer n'importe où dans le panneau de droite et il se concentre...

0 votes

Le focus de cette page ne devrait-il pas fonctionner ? L'extrait que j'ai fourni ?

2voto

Christian Points 1

Dans mon cas, et au cas où quelqu'un d'autre rencontrerait ce problème, je charge un formulaire à afficher, l'utilisateur clique sur "Editer" et ajax obtient et renvoie les valeurs et met à jour le formulaire.

Juste après, j'ai essayé toutes ces choses et aucune n'a fonctionné, sauf.. :

setTimeout(function() { $('input[name="q"]').focus() }, 3000);

que j'ai dû modifier (à cause d'ajax) :

setTimeout(function() { $('input[name="q"]').focus() }, **500**);

et j'ai finalement juste utilisé $("#q") même si c'était une entrée :

setTimeout(function () { $("#q").focus() }, 500);

1voto

mariovials Points 544

Assurez-vous que l'élément et ses parents sont visibles. Vous ne pouvez pas utiliser le focus sur des éléments cachés

1voto

Madhuka Dilhan Points 768

Vous pouvez essayer ceci id est tries

window.location.hash = '#tries';

1voto

Aryan Shridhar Points 31

J'ai été confronté à un problème similaire et j'ai enveloppé l'événement dans le cadre de setTimout a parfaitement fonctionné pour moi. Mais j'ai eu l'impression que ce n'était pas la meilleure approche pour résoudre le problème (retarder manuellement l'événement).

Cependant, dans mon cas, l'événement de focalisation ne se déclenchait pas car l'élément était invisible/caché et il s'avère que l'élément était visible après quelques millisecondes alors que je déclenchais l'événement de focalisation à l'intérieur de l'élément. element.on("focus") (qui est déclenchée lorsque l'élément est cliqué et que l'élément est mis au point).

Cela a marché pour moi :

element.on("focus", (e) => {
  e.preventDefault();
  if (element.is(":visible")) {
    search_input.trigger("focus");
  }
});

0voto

KMA Badshah Points 477

Astuce de pro. Si vous souhaitez activer la mise au point à partir de la console de développement, il suffit d'ouvrir la console dans une fenêtre distincte de l'onglet des options. Les derniers Firefox et Chrome prennent en charge cette fonctionnalité.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X