2009-10-12 5 views
0

Je suis un débutant en js et je crains de ne pas avoir les connaissances nécessaires pour résoudre le prochain problème.créer un élément de sélection via js, focus ne fonctionne pas dans IE

Si j'ai un élément de sélection (peuplé avec plusieurs options) déjà analysées par le navigateur de la charge, le code suivant fonctionne très bien dans les deux IE et FF

$('selectId').focus(); 

mais si je crée (et remplir il) l'élément via js

var select = new Element('select',{ 'id':'selectId' }); 
~ etc. with options ~ 
select.focus(); 

l'événement focus ne fonctionne pas dans IE. Avec FF, tout va bien!

J'ai déjà essayé différentes méthodes pour contourner ce problème mais sans de bons résultats! Chaque fois que je dois cliquer sur l'élément pour activer l'événement de mise au point (dans IE).

(oui, j'utiliser la bibliothèque Mootools!)

Toute aide sera très appréciée!

Merci!

+1

est-il correct de supposer que vous ajoutez réellement la liste déroulante au DOM? – Matt

+0

oui mon ami! ;) L'élément est correctement ajouté dans le DOM et fonctionne bien sauf que dans IE perd le focus que je lui ai donné. Firebug et la console IE ne donnent aucun type d'erreur js ... Merci pour l'aide! –

+0

pouvez-vous reproduire le problème pour nous sur jsbin.com? – Matt

Répondre

0

@Christoff Merci mon ami! J'ai peur de devoir utiliser le ver 1.11 de mootools car le projet est basé sur la dernière version de Joomla (1.5.14) qui supporte seulement les mootools 1.11 ... J'ai essayé d'appeler l'événement click juste après la création de l'élément (comme vous l'avez fait dans l'échantillon) et il semble fonctionner, pas 100%, mais fonctionne. Le seul problème est que si vous cliquez sur l'option FIRST, juste après l'apparition de la sélection, vous obtiendrez à l'alerte la valeur de la pré-sélectionnée! Si vous cliquez sur une autre option, l'alerte renvoie la bonne valeur! Étrange! (Je parle toujours pour le navigateur IE7-8!)

En outre, j'ai copié-collé le code du mooshel au jsbin.com (http://jsbin.com/axuxi) et il semble avoir le même problème. Le premier clic renvoie toujours la valeur de la présélectionnée ...

Merci pour votre aide!

+0

peut-être que vous manipulez le mauvais événement ici. Je n'ai jamais la première option - en FF 3.5 et IE7. cependant, je suppose qu'il est concevable que l'événement click lui-même puisse se déclencher avant l'événement onchange, de la même façon que l'onkeydown ou onkeypress. J'ai refacturé les choses un peu ici http://mooshell.net/tnYBY/ - à travers onfocus et onchange. cela fonctionne de façon fiable, mais vous pouvez faire fonctionner la fonction deux fois (par exemple, si vous avez perdu le focus, cliquez sur une nouvelle option). p.s. vous avez besoin de firebug/console pour le voir, ou remplacez par des alertes. –

Questions connexes