2011-07-08 48 views
3

我有一系列的單選按鈕,它的onClick要麼顯示或隱藏一個div:股利從PHP調用JavaScript函數內回聲單選按鈕

顯示:

<input type="radio" name="con[4]" value="1" onclick="toggleLayer4(this.checked);" id="con4" /> 

隱藏在div:

<input type="radio" name="con[4]" value="0" onclick="toggleLayer4(!this.checked);" checked="checked" id="con4" /> 

的JavaScript:

function toggleLayer4(val) 
     { 
      if(val == '1' || val === true) 
      { 
       document.getElementById('con4').checked = true; 
       document.getElementById('con4PSTN').style.display = 'block'; 
      } 
      else if(val == '0' || val === false) 
      { 
       document.getElementById('con4').checked = false; 
       document.getElementById('con4PSTN').style.display = 'none'; 
      } 
     } 

現在的問題,當PAG是回憶,我可以得到的單選按鈕選中這樣的:

<input type="radio" name="con[4]" value="1" onclick="toggleLayer4(this.checked);" <? if ($conn_count[3] == 1){echo "checked=\"checked\"";}?> id="con4" /> 

但我需要調用JavaScript功能的,以露出股利如果單選按鈕被選中,我試圖在PHP標籤裏面聲明toggleLayer4(this.checked);內的PHP if語句,但是這似乎只能導致html中的文本?

必須有一種方式,不是真正精通JS。

乾杯, B.

回答

1

這裏是一個簡單的不顯眼的JavaScript爲你,這將節省你一些工作 - 請注意有沒有在無線電事件處理程序了。

我給了他們唯一的ID是強制性的。

如果您需要將jQuery用於其他內容,該腳本可以更加優雅一些。

我認爲

<input type="radio" name="con[1]" value="1" id="con1_1" /> 
<input type="radio" name="con[1]" value="0" id="con1_0" /> 
<input type="radio" name="con[2]" value="1" id="con2_1" /> 
<input type="radio" name="con[2]" value="0" id="con2_0" /> 
<input type="radio" name="con[3]" value="1" id="con3_1" /> 
<input type="radio" name="con[3]" value="0" id="con3_0" /> 
<input type="radio" name="con[4]" value="1" id="con4_1" /> 
<input type="radio" name="con[4]" value="0" id="con4_0" /> 

和匹配的對象有conxPSTN其中X在CON數[X]

window.onload=function() { 
    var conLength = <?php echo count($con); ?>; 
    for (var i=1;i<=conLength;i++) { 
    var cons = document.getElementsByName("con["+i+"]"); 
    for (var j=0;j<cons.length;j++) { 
     cons[j].onclick=function() { 
     var id = this.id.split("_")[0]; 
     document.getElementById(id+"PSTN").style.display = (this.value==1)?"block":"none" 
     } 
     if (cons[j].checked) cons[j].click(); 
    } 
    } 
} 
+0

謝謝,我很喜歡你的解決方案,儘管我有麻煩,因爲即使按鈕​​是手動檢查,相應的Div不顯示,這裏是需要顯示/隱藏的div的代碼:

PSTN line?

Bifterss

+0

哦和你認爲是正確的!此外,你有回聲$ con的地方,沒有$ con,總會有10個div顯示出來...... – Bifterss

+0

感謝你所有的代碼 - 讓它工作!!!!! – Bifterss

0

如果是從PHP的呼應,那麼你應該做的像

echo "<script type='text/javascript'>toggleLayer4(this.checked);</script>"; 

但你不能在那裏使用this。你需要得到的單選按鈕的值手動ñ傳遞

編輯

這是當你需要顯式調用的代碼的某些部分的功能,當PHP代碼是的情況下而不是<script>標籤。

0
<input type="radio" name="con[4]" value="0" onclick="toggleLayer4(0);" checked="checked" id="con4" /> 


    <input type="radio" name="con[4]" value="1" onclick="toggleLayer4(1);" checked="checked" id="con4" /> 
function toggleLayer4(val) 
    { 
    if(val){ 
    document.getElementById('con4PSTN').style.display = 'block';} 
    else{ 
    document.getElementById('con4PSTN').style.display = 'none'; 
    } 
    } 
+0

不能兼得檢查,你不檢查在您的代碼中檢查值onload。 – mplungjan