J'ai une série d'éléments DIV qui, lorsqu'on clique dessus, déclenche un événement ouvert DOMWindow. Pas de problème là-bas..focus() ne fonctionne pas après la fermeture d'un DOMWindow() [JQuery]
Puis j'ai dû ajouter l'accessibilité au clavier. DOH !!
J'ai ajouté des attributs tabindex aux DIV, ce qui permet à l'utilisateur de passer d'un DIV à l'autre, et j'ai ajouté un gestionnaire de touches pour gérer la touche Entrée. Pas de problème là-bas. Le problème que je SUIS éprouve essaye de remettre le foyer sur le div que l'utilisateur était dessus quand il ou elle a frappé la clef d'entrée et a ouvert le DOMWindow (ainsi ils peuvent continuer à taber au prochain DIV dans la série) .
J'ai essayé d'ajouter une fonction au paramètre "functionCallOnClose" du DOMWindow, mais cela ne semble pas faire quoi que ce soit.
Voici un extrait de code. Ce lie les événements de clic et keypress à tous les DIVs qui ont un nom de classe « TimeEntry »:
$(".timeEntry").live("click keypress", function() {
// bunch of code here to set up the DOMWindow...
$.openDOMWindow({
// bunch of settings here...
functionCallOnClose: function() {
// this doesn't work
// 'DivId' is the object (DIV) that was clicked on
$(DivId).focus();
}
});
});
Quelqu'un at-il la moindre idée pourquoi je ne peux pas sembler obtenir le focus à la DIV d'origine après la les événements click ou keypress sont déclenchés et gérés?
Je sais que cela est une question assez obscure, donc je le jeter là-bas dans l'espoir que quelqu'un d'autre lecture de ce utilise JQuery, domWindow et la gestion des événements de clic et keypress (ou au moins sait comment)
: o)
EDIT: Après quelques premiers débogage, il semble qu'il y ait un problème avec jQuery obtenir l'attribut tabIndex de balises DIV. Quand je regarde la source de ma page, je peux voir les attributs:
<div id="someDiv" class="someClass" tabindex="1"> ... </div>
Cependant, lorsque je tente d'obtenir l'attribut en utilisant jQuery, il ne semble pas être là.
Ce code retourne "undefined"
var tabindex = $("#someDiv").attr("tabindex");
Cependant, si je mets l'attribut en utilisant jQuery, je peux retourner et récupérer:
// set the tabindex
$("#someDiv").attr("tabindex", "1");
// now this returns "1"
var tabindex = $("#someDiv").attr("tabindex");
Quelqu'un at-il une idée de pourquoi jQuery doesn Ne pas retourner l'attribut tabindex quand il est défini dans le code HTML, mais il sera après avoir été défini dynamiquement en utilisant le code?
Hope this logique ...
L'appel .focus() fonctionne sur des divs ailleurs dans votre script? Je remarque dans les docs .focus() qu'il peut ne pas fonctionner sur les éléments non-formulaire dans les anciens navigateurs, même avec un tabindex. De plus, avez-vous essayé de mettre une alerte dans votre fonctionCallOnClose, pour vous assurer qu'elle s'exécute réellement? – Ender
Oui, le focus() fonctionne ailleurs, et oui, je sais que la fonction s'exécute parce que je peux y accéder en utilisant le débogueur.Ce qui est bizarre, c'est que je n'arrive pas à obtenir l'attribut tabindex de la div en utilisant jQuery. Je peux le voir dans la source HTML, donc je sais que c'est là, mais jQuery retourne "undefined" quand j'essaye d'y accéder. Je suppose que c'est la cause sous-jacente de mon problème. – camainc