2010-08-13 5 views
1

J'ai écrit une méthode js qui fonctionne parfaitement sur FF. Cette méthode js est appelée en cliquant sur un bouton radio.IE8 Javascript Error

Dans IE, lorsque je clique sur le bouton radio, la méthode js est appelée uniquement lorsque je clique quelque part sur le formulaire. Je n'ai aucune idée de ce comportement étrange dans IE.

Des idées?

Thx


Voici mon code.

xmlns:h="http://java.sun.com/jsf/html" 
xmlns:f="http://java.sun.com/jsf/core" 

HTML CODE:

<h:selectOneRadio id="pid" value="#{Bean.pid}" onchange="javascript:checkPid();">  
<f:selectItem itemLabel="label1" itemValue="value1"/> 
<f:selectItem itemLabel="label2" itemValue="value2" /> 
<f:selectItem itemLabel="label3" itemValue="value3" /> 
</h:selectOneRadio> 

JAVASCRIPT:

<script language="javascript" type="text/javascript"> 

function checkPid() { 
    //some basic js here 
    //even if I just give an one-liner alert stmt here, In IE it 
    //shows up only when I click somewhere on the form after I click 
    //on the radio button 
} 

Merci à l'avance!

+7

Parlez-vous de l'événement de changement pour les radios? Dans FF, la valeur d'une radio est modifiée juste après que vous avez cliqué dessus. Mais il semble que dans IE, la valeur est considérée comme "changée" après avoir cliqué et perdu le focus. –

+0

Pouvez-vous poster du code. Inclure votre code HTML et JavaScript, sinon c'est pratiquement impossible d'aider. –

+0

Pourquoi prendre en charge Internet Explorer? Le support IE est un cercle vicieux qui ne peut être arrêté que par le * développeur * en premier. Si nous continuons son soutien, les utilisateurs n'auront aucune incitation à changer de navigateur, et cela durera indéfiniment, ou du moins jusqu'à ce que Microsoft publie un navigateur décent (IE9, une réécriture complète, est en fait plutôt sympa). Pour le moment, cependant, 55% des utilisateurs d'Internet utilisant IE devront faire face à une vérité un peu dure et passer à autre chose. –

Répondre

1

Essayez l'événement onclick plutôt que l'événement onchange.

Vous devez modifier votre code si:

<h:selectOneRadio id="pid" value="#{Bean.pid}" onclick="checkPid(this);">  

Et votre fonction javascript:

function checkPid(e) { 
    //do stuff with e.value 
} 

Vous devriez être en mesure de valider ce que l'utilisateur a cliqué sur par e.value. Cela devrait fonctionner pour les deux navigateurs.