2009-09-24 5 views
0

Simple question vraiment. Cela fonctionne tout sauf IE6:Flouter une sélection après un changement dans Internet Explorer 6

<html> 
<body> 
</body> 
<select id="test" onchange="blur()"> 
<option name="one">One</option> 
<option name="two">Two</option> 
<option name="three">Three</option> 
</select> 
</html> 

Y at-il de toute façon d'obtenir ce travail dans IE6? JavaScript et JQuery hacks autorisés.

Des idées, des remarques ou des conseils? Merci à l'avance

+0

Il semble qu'il vous manque du code. –

+0

Qu'est-ce qui ne fonctionne pas? – rahul

+0

le flou() ne fonctionne pas. Désolé aurait dû spécifier plus clairement. –

Répondre

3

Sous jQuery:

<script type="text/javascript"> 
$(function() { 
    $('#test').change(function() { 
     $(this).blur(); 
    }); 
}); 
</script> 

Ou vous pouvez essayer de remplacer:

Avec:

<select id="test" onchange="javascript:blur(this);"> 

MISE À JOUR: En fait, il semble que le IE6 JavaScript engi n'a des problèmes avec le flou()

A (non idéal) Le travail est autour de:

<script type="text/javascript"> 
$(function() { 
    $('#test').change(function() { 
     $('body').focus(); 
    }); 
}); 
</script> 

qui va perdre le focus sur le champ de saisie de sélection en se concentrant le document HTML.

+1

Deux erreurs dans la version non-jQuery: 1) n'utilisez pas de préfixe 'javascript:' dans un attribut de gestionnaire d'événements. La valeur de l'attribut doit être du JavaScript pur. 2) Vous devriez appeler la méthode blur() de l'objet select, pas la fenêtre (ce qui est effectivement ce que vous faites), et je serais surpris si ce que vous avez là fonctionne dans n'importe quel navigateur. –

+0

+1 Merci, je n'ai jamais su cela. –

+0

En fait, je pense que je peux me tromper sur le second point: je pense que les sélections n'ont pas de méthode flou(). Pourtant, tenter de faire perdre toute la fenêtre à la mise au point semble étrange. –

0
<select id="test" onchange="blur()"> 

Vous voulez brouiller la sélection, pas la fenêtre (qui agit en tant que l'objet global, c'est donc le même que window.blur()).

<select id="test" onchange="this.blur();"> 

Works dans tout sauf IE6 en raison d'un bug. Vous pouvez la contourner en se concentrant quelque chose d'autre:

<a href="#" id="x"></a> 
<select id="test" onchange="var x= document.getElementById('x'); x.focus(); x.blur();"> 

MAIS! De toute façon, ne faites pas ça. Vous casserez l'accessibilité du clavier pour la sélection (puisque appuyer sur haut/bas envoie immédiatement un événement de changement). C'est le même problème que les listes déroulantes malmenées comme la navigation.

Questions connexes