2010-08-13 142 views
1

我寫了一個在FF上完美運行的js方法。 這個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中,該值被點擊後失去焦點被認爲是「改變」。 – 2010-08-13 06:50:34

+0

你可以發表一些代碼嗎?包括你的HTML和JavaScript,否則它幾乎不可能提供幫助。 – 2010-08-13 07:10:44

+0

爲什麼要支持Internet Explorer? IE支持是一個惡性循環,只能由*開發人員*先阻止。如果我們繼續支持,用戶將沒有動力去改變瀏覽器,這將永遠持續下去,或者至少在微軟發佈一個體面的瀏覽器(IE9,一個完整的重寫,其實相當不錯)之前。然而,現在,使用IE的55%的互聯網用戶將不得不面對一個稍微苛刻的事實,並繼續前進。 – 2010-08-13 08:37:50

回答

1

嘗試onclick事件而不是onchange事件。

你需要,雖然修改代碼:

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

而JavaScript函數:

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

您應該能夠驗證用戶點擊了什麼通過e.value。這應該適用於這兩種瀏覽器。