2016-04-27 60 views
1

我需要禁用所有單選按鈕;最好的方法是使用JavaScript,但我不太擅長;我嘗試循環ID,但這是一場災難! 我最終使用6行來禁用每個單選按鈕,我能做到這一點更有效地如何使用順序標識禁用多個單選按鈕?

document.getElementById("radio1").disabled = true; 
 
document.getElementById("radio2").disabled = true; 
 
document.getElementById("radio3").disabled = true; 
 
document.getElementById("radio4").disabled = true; 
 
document.getElementById("radio5").disabled = true; 
 
document.getElementById("radio6").disabled = true;
Radio Buttons:<br> 
 
<input type="radio" id="radio1">1<br> 
 
<input type="radio" id="radio2">2<br> 
 
<input type="radio" id="radio3">3<br> 
 
<input type="radio" id="radio4" checked>4<br> 
 
<input type="radio" id="radio5">5<br> 
 
<input type="radio" id="radio6">6

回答

2

您可以使用querySelectorAll()type="radio"選擇所有輸入,然後使用循環來設置disabled = true每一個

var inputs = document.querySelectorAll('input[type="radio"]'); 
 
for (var i = 0; i < inputs.length; i++) { 
 
    inputs[i].disabled = 'true'; 
 
}
Radio Buttons: 
 
<br> 
 
<input type="radio" id="radio1">1<br> 
 
<input type="radio" id="radio2">2<br> 
 
<input type="radio" id="radio3">3<br> 
 
<input type="radio" id="radio4" checked>4<br> 
 
<input type="radio" id="radio5">5<br> 
 
<input type="radio" id="radio6">6

+1

這將禁用頁面 – lmcarreiro

+1

是固定的,以便現在將僅選擇'輸入[類型=「無線電」]' –

+0

即是很好的瞭解上的任何其他輸入元件;以防萬一我不得不添加更多的輸入請求! – cronos

2

不確定爲什麼循環是一場災難。這是我會怎麼做:

for (var i = 1; i <= 6; i++) { 
    document.getElementById("radio" + i).disabled = true; 
} 

或者:

var ids = ['radio1', 'radio2', 'radio3', 'radio4', 'radio5', 'radio6']; 

ids.forEach(function (id) { 
    document.getElementById(id).disabled = true; 
}); 
1

您可以使用CSS選擇器(document.querySelectorAll):

var radios = document.querySelectorAll("[id^='radio']"); //get all elements that have an id starting with 'radio' 
for (var i = 0; i < radios.length; i++) { 
    radios[i].disabled = true; 
} 
0

你可以沿着這些線路做一些

// load all the inputs in the document into memory 
var inputs = document.getElementsByTagName("input"); 

// loop over them, and set the disabled attribute on each of them 
for (var i = 0; i < inputs.length; i++) {  
    inputs[i].disabled = true; 
} 

請注意,由做document.getElementsByTagName("input"),你收集所有的投入在你的頁面,所以更好的辦法是將它們包裝在一個容器中,並做它的表達,就像這樣:

<div id="input-container"> 
    <input type="radio" id="radio1"> 
    ... 
</div> 

然後

var container = document.getElementById("input-container"); 
var inputs = container.getElementsByTagName("input"); 

循環保持相同