2014-03-05 25 views
0

當我點擊刪除按鈕而沒有點擊任何複選框時,它應該顯示警報,但在這個編碼中,如果第一個複選框被選中,它不會顯示警報。如果選中第二個複選框,它將顯示警報。getElementByTagName不起作用

HTML:

<div id="checkbox"> 
     <input type="CHECKBOX" name="MyCheckbox" class="checkbox" value="This..." > 
     <input type="CHECKBOX" name="MyCheckbox" class="checkbox" value="This..." > 
     <input type="CHECKBOX" name="MyCheckbox" class="checkbox" value="This..." > 
     <input type="CHECKBOX" name="MyCheckbox" class="checkbox" value="This..." > 
    </div> 
     <form action="DeleteServer" onsubmit="return checkCheckBoxes(this);"> 
      <input type="SUBMIT" value="Delete!"> 
     </form> 

腳本函數:

function checkCheckBoxes() { 
    var chk = document.getElementById("checkbox").getElementsByTagName("input"); 
    for(var i=0; i<chk.length;i++){ 
     if (document.getElementById("checkbox").getElementsByTagName("input")[i].checked == false) 
     { 
      alert ('You didn\'t choose any of the checkboxes!'); 
      return false; 
     } else {  
      return true; 
     } 
     } 
    } 
+0

'的getElementsByTagName( 「輸入」)[0] .checked'或'的getElementsByTagName( 「輸入」)[1] .checked '應該有所幫助。 – yashhy

+0

它的工作。但我想添加幾個複選框的手段,如何編寫循環之前條件 – Mohaideen

+0

然後請編輯您的問題,以澄清問題在哪裏。 – Micer

回答

2

這應該解決問題:

var inputs  = document.querySelectorAll('#checkbox input'); 
    is_checked = false; 

for(var i = 0; i < inputs.length; i++) { 
    if(inputs[i].type == 'checkbox' && inputs[i].name == 'MyCheckbox') { 
     is_checked = inputs[i].checked; 
     if(is_checked) break; 
    } 
} 

if(!is_checked){ 
    alert('You didn\'t choose any of the checkboxes!'); 
} 

Here is a fiddle

3

getElementsByTagName小號在裏面。它是複數。它返回一個NodeList而不是一個Element。

鑑於您的HTML,該NodeList將包括2個獨立的input s。

你必須遍歷它(就好像它是一個數組)和測試又將每個inputchecked財產。

+0

呃...... *漂亮*確定他們正在循環它,實際上,給予'for'循環... –

+0

@NiettheDarkAbsol - 這是編輯後的問題我寫了這個,可能是爲了迴應這個答案。 – Quentin

+0

Gotcha。很公平。 –

0
function checkCheckBoxes() { 
     var inputs  = document.querySelectorAll('#checkbox input'); 
     is_checked = false; 

     for(var i = 0; i < inputs.length; i++) { 
      if(inputs[i].type == 'checkbox') { 
       is_checked = inputs[i].checked; 
       if(is_checked) return true; 
      } 
     } 

     if(!is_checked){ 
      alert('You didn\'t choose any of the checkboxes!'); 
      return false; 
     } 
    }