2013-04-23 101 views
3

我一直試圖找出現在幾個小時我的問題的解決方案。我還是比較新的Javascript,所以請原諒我,如果我聽起來很愚蠢。可悲的是,我不知道jQuery,我開始認爲它阻礙了我想出一個解決方案。使用javascript啓用和禁用複選框

我想要做的是有一個複選框,啓用禁用單選按鈕。如果這是有道理的。

例子:

  • 選擇1
  • 子選擇
  • 子選擇
  • 子選擇

我希望能夠單擊第一個複選框(選擇1 )啓用子選項。如果沒有點擊,應該禁用子選項。 :-)

這裏是我到目前爲止有:

<script> 
function enableRadios(x) { 
    var formElement = eval("checkbox" + x) 
    if (formElement[0].disabled) { 
     formElement[0].disabled = false 
     formElement[1].disabled = false 
    } else { 
     formElement[0].disabled = true 
     formElement[1].disabled = true 
    } 
}</script> 

<body><input type="checkbox" name="main" value="main" onClick="enableRadios(x)"> 
<input disabled type="radio" value="1" name="x"> 
<input disabled type="radio" value="2" name="x"> 
<input disabled type="radio" value="3" name="x"> 
<input disabled type="radio" value="4" name="x"> 
<input disabled type="radio" value="5" name="x"> 
<input disabled type="radio" value="6" name="x"></body> 

我真的很感謝你的幫助!

+0

您好,很大的問題,JavaScript是不是我的事情,所以我能做的就是向你提出這個類似的問題,也許你可以繼承你的工作?我的假設是這部分是錯誤的,但我不再使用javascript,「if(formElement [0] .disabled)formElement [0] .disabled = false formElement [1] .disabled = false } else { formElement [0] = .disabled真正 formElement [1] .disabled =真 }」 http://stackoverflow.com/questions/5215048/javascript-checkbox-enable-disable – 2013-04-23 07:42:02

回答

2

你需要通過包含無線電名'x'一個字符串,而不是傳遞變量x

<script> 
function toggleRadios(name) { 
    var elems = document.getElementsByName(name); 
    for(i=0; i<elems.length; i++) { 
     elems[i].disabled = !elems[i].disabled; 
    } 
} 
</script> 

<input type="checkbox" name="main" value="main" onclick="toggleRadios('x')"> 
<input disabled type="radio" value="1" name="x"> 
<input disabled type="radio" value="2" name="x"> 
<input disabled type="radio" value="3" name="x"> 
<input disabled type="radio" value="4" name="x"> 
<input disabled type="radio" value="5" name="x"> 
<input disabled type="radio" value="6" name="x"> 

http://jsfiddle.net/samliew/B6tF7/

+0

你是了不起的!非常感謝! – 2013-04-23 07:52:02

+0

+1:最好在'toggleRadios'函數中傳遞'this.checked'作爲參數,並根據該值啓用或禁用。 – naveen 2013-04-23 07:56:10

+0

在這種情況下,性能差異可以忽略不計,因爲我們正在反轉布爾值。 – 2013-04-23 07:58:23