2010-08-13 3 views
1

Я написал метод js, который отлично работает на FF. Этот метод js вызывается щелчком переключателя.IE8 Ошибка Javascript

В IE, когда я нажимаю переключатель, метод js вызывается только тогда, когда я нажимаю где-то на форме. Я понятия не имею об этом странном поведении в IE.

Любые идеи?

Thx


Вот мой код.

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

HTML КОД:

<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 
} 

Заранее спасибо!

+7

Вы говорите об изменении события для радиостанций? В FF значение радио изменяется после нажатия. Но похоже, что в IE значение считается «измененным» после того, как оно щелкнуло и потеряло фокус. –

+0

Можете ли вы разместить код. Включите ваш HTML и JavaScript, иначе его практически невозможно помочь. –

+0

Зачем нужна поддержка Internet Explorer? Поддержка IE - это порочный круг, который может быть остановлен только * разработчиком *. Если мы продолжим поддерживать, у пользователей не будет стимула менять браузеры, и это будет продолжаться вечно, или, по крайней мере, до тех пор, пока Microsoft не выпустит достойный браузер (IE9, полная переписывание, на самом деле очень приятно). На данный момент 55% пользователей Интернета, использующих IE, должны столкнуться с немного суровой истиной и двигаться дальше. –

ответ

1

Попробуйте событие onclick, а не событие onchange.

Вам нужно изменить код, хотя:

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

И ваш яваскрипт функция:

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

Вы должны быть в состоянии проверить, что нажал пользователь по e.value. Это должно работать для обоих браузеров.

Смежные вопросы