我正在試圖製作一個Facelet,其中有兩行,每行都包含兩個單選按鈕。我想這樣做,如果第一行中選擇第一個單選按鈕,第二行中的第二個單選按鈕應該被選中,反之亦然。我正在嘗試使用JavaScript,但仍然沒有在瀏覽器中反映這些更改。從一個內部選擇另一個<h:selectOneRadio><h:selectOneRadio>
這裏是JavaScript:
<script type="text/javascript">
function radioSelect(val){
if(val.id == "encrypted:1")
{
document.getElementById("protected:0").value = "false";
document.getElementById("protected:1").value = "true";
}
else
{
document.getElementById("protected:0").value = "true";
document.getElementById("protected:1").value = "false";
}
}
</script>
這裏是從我的facelet文件中的一段代碼:
<h:selectOneRadio id="encrypted"
value="#{uploadFileBean.encryption}" onclick="radioSelect(this);">
<f:selectItem itemLabel="Yes" itemValue="true"></f:selectItem>
<f:selectItem itemLabel="No" itemValue="false"></f:selectItem>
</h:selectOneRadio>
<h:selectOneRadio id="protected"
value="#{uploadFileBean.fileprotected}">
<f:selectItem itemLabel="Yes" itemValue="true"></f:selectItem>
<f:selectItem itemLabel="No" itemValue="false"></f:selectItem>
</h:selectOneRadio>
好當我試圖寫這個JavaScript函數阿賈克斯更改不起作用。
<script type="text/javascript">
function radioSelect(val){
if(val.id == "encrypted:1")
{
document.getElementById("protected:0").value = "false";
document.getElementById("protected:1").value = "true";
}
if(val.id == "protected:1")
{
document.getElementById("encrypted:0").value = "false";
document.getElementById("encrypted:1").value = "true";
}
if(val.id == "encrypted:0")
{
document.getElementById("protected:0").value = "false";
document.getElementById("protected:1").value = "true";
}
if(val.id == "protected:0")
{
document.getElementById("encrypted:0").value = "true";
document.getElementById("encrypted:1").value = "false";
}
}
</script>
你確定不應該是'document.getElementById(「protected」)',因爲我在那裏沒有看到':0'嗎?並設置值並不檢查單選按鈕! – adeneo 2013-04-10 10:34:43
我認爲你需要重新渲染組件,這取決於哪個單選按鈕執行了操作。 – dShringi 2013-04-10 10:35:49
是的,我試過「保護」,但在Chrome上調試時我找不到值屬性,所以我使用了保護:0以便更改它的值,但它沒有這樣做。 – Tushar 2013-04-10 10:36:26