lorsque je clique dessus, le champ ne reçoit pas le focus. je peux accéder au champ en appuyant sur la touche "tabulation".
Il semble que vous ayez annulé l'action par défaut de l'option mousedown événement. Cherchez dans votre HTML et JS onmousedown et cherchez une ligne qui dit.
return false;
Cette ligne peut vous empêcher de vous concentrer en cliquant.
Concernant votre commentaire, je suppose que vous ne pouvez pas modifier le code qui ajoute ce gestionnaire ? Si c'est le cas, la solution la plus simple consiste à supprimer l'élément return false;
déclaration.
Y a-t-il un moyen d'ajouter une fonctionnalité au déclencheur d'événement sans l'écraser ?
Cela dépend de la façon dont le gestionnaire est attaché. S'il est attaché à l'aide de la méthode d'enregistrement traditionnelle, par ex. élément.onmousedown vous pourriez alors créer une enveloppe pour cette dernière :
var oldFunc = element.onmousedown;
element.onmousedown = function (evt) {
oldFunc.call(this, evt || window.event);
}
Puisque ce "wrapper" ne retourne pas faux il n'annulera pas l'action par défaut (mise au point) de l'élément. Si votre événement est attaché à l'aide d'une méthode d'inscription avancée, telle que addEventListener ou attachEvent il suffirait alors de supprimer le gestionnaire d'événement en utilisant le nom/la référence de la fonction et de le rattacher à l'aide d'une fonction enveloppée similaire à celle décrite ci-dessus. Si c'est une fonction anonyme qui a été ajoutée et que vous ne pouvez pas obtenir une référence à celle-ci, la seule solution serait d'attacher un autre gestionnaire d'événement et de mettre au point l'élément manuellement à l'aide de la fonction élément.focus() méthode.