2012-11-23 79 views
0

我需要使用複選框,但沒有提交按鈕 - 它需要對用戶已經在頁面上的效果,包含複選框的頁面。如何檢測選中哪個複選框?

本質上,我有~10個複選框元素。用戶選擇其中的一定數量,然後單擊一個按鈕元素。當他們點擊該元素時,我需要檢測哪些複選框已被檢查。用最短的代碼做這件事最好的辦法是什麼?

+0

你使用jquery或其他JS LIB?或者你需要在計劃的JavaScript代碼中完成?在jQuery中:'$('selectorx:checked')'是最短的一個 – sakhunzai

+0

Esthete明白了!我不在乎,也可能是。無論速度如何,通常都是jQuery。 – Aerovistae

+0

這個問題被標記爲'jquery'。 – Aesthete

回答

3

有你所有的複選框共享同一個類。

var allChecked = $(".checkBoxClass:checked"); 

這將返回類別checkBoxClass中已選中複選框的列表。現在你可以迭代每個元素並對它們進行操作。

for(var i=0; i<allChecked.length; i++) {  
    console.log("Checkbox " + $(allChecked[i]).val().toString() + " is checked"); 
} 
+1

jQuery是敬業的。這很棒。出於某種原因,我一直很擔心這一點。 – Aerovistae

+0

這是行不通的。類名和檢查的屬性之間有一個空格 – Abhilash

+0

@abhilash - Typo。固定。 – Aesthete

0

嘗試:

<input type="checkbox" id="1" value="one"/> 
    <input type="checkbox" id="2" value="two"/> 
    <input type="checkbox" id="3" value="three"/> 
    <input type="button" onclick="validate()" value="Check"/> 

    <script type="text/javascript"> 
     function validate(){ 
      var chkArr = document.querySelectorAll('input[type="checkbox"]'); 
      var notChecked=''; 
      for(var i=0;i<chkArr.length;i++){ 
       if(!chkArr[i].checked) 
        notChecked += chkArr[i].value 
      } 
      if(notChecked.length) 
       alert(notChecked); 
     } 
    </script> 
+0

現在一天的人不明白計劃-JS :),如果你把計劃-js的完整答案將是偉大 – sakhunzai

+0

你讓我:)好 – sakhunzai

+0

;)............ .. –

0

任何這些應該工作:

$('input:checked'); 

$('input:checkbox:checked'); 

$('input:checkbox').filter(':checked');