2011-11-04 53 views
1

這是處理。任務是編寫一個函數,該函數應該能夠確定爲每個問題檢查的複選框數量,並在超過3個答案被選中時提示用戶。 我總共有8個問題,每個問題有4到8個答案,複選框格式。 這是我想出了:Javascript中的複選框

function countChecks(){ 
    var m = 0; 
    var n = 0; 
chk = document.getElementsByName("DSelectionID"); 

    for(var i=0; i<myitems.length i=""></myitems.length> 
    var value = myItems[i]; 

    for(n = 0; n < value.length; n++) { 
if(value[n].checked) { 
    m++; 
} 
} 
return m; 
} 

上述功能工作正常的一個問題,並返回「M」的主要功能,它可以處理這樣說:

var check = countchecks(); 

if (check > 3) 
alert ("more than 3 checkboxes were selected"); 
    else { 
//do the thing 
} 

遍歷所有在8個問題,這是我想出了:

function countChecks(){ 

    var m = 0; 
    var n = 0; 

//此捕獲的ID爲正確的問題

chk = document.getElementsByName("DSelectionID"); 
chk2 = document.getElementsByName("DSelectionID2"); 
chk3 = document.getElementsByName("DSelectionID3"); 
chk4 = document.getElementsByName("DSelectionID4"); 
chk5 = document.getElementsByName("DSelectionID5"); 
chk6 = document.getElementsByName("DSelectionID6"); 
chk8 = document.getElementsByName("DSelectionID8"); 
chk9 = document.getElementsByName("DSelectionID9"); 

    var myItems = new Array(); 

    myItems[0]= chk; 
    myItems[1]= chk2; 
    myItems[2]= chk3; 
    myItems[3]= chk4; 
    myItems[4]= chk5; 
    myItems[5]= chk6; 
    myItems[6]= chk8; 
    myItems[7]= chk9; 

//遍歷所有問題 (var i = 0; i var value = myItems [i];

//通過複選框爲每個問題

for(n = 0; n < value.length; n++) 
    { 
    if(value[n].checked) 
    { 
     m++; 
    if (m > 3) { 
    return false; 
    } 
    } 
} 
    } 
} 

和主體循環處理這樣的:

var check = countChecks() 
if (check == false) 
alert ("more than 3 checkboxes were selected"); 
    else { 
//do the thing 
    } 

這是很簡單的東西我缺少的countChecks()功能 任何想法?

回答

2

使用jquery將使這很瑣碎

if ($('#yourform input[type=checkbox]:checked').length() > 3) { 
    alert('More than 3 checked'); 
} 
0

chk = document.getElementsByName("DSelectionID");不搶ID,它抓住到DOM元素的引用。

要得到你需要使用ID:

chk = document.getElementsByName("DSelectionID").getAttribute("id") 
+0

它返回一個DOM節點列表,這基本上是匹配的元素的數組,其實。 –