2013-02-10 173 views
6

我想做一個函數來檢查所有複選框是否未選中。我對文本框有類似的功能。由於我之前沒有使用複選框,我不知道如何修改它,除了將輸入[type = text]更改爲輸入[type = checkbox]。誰能幫我嗎。謝謝。如何檢查所有複選框是否未經檢查

var textinputs = document.querySelectorAll('input[type=text]'); 
var empty = [].filter.call(textinputs, function(el) { 
    return !el.value 
}); 

    if (textinputs.length == empty.length) { 
     alert("None filled"); 
     return false; 
} 

回答

10

下應該做的伎倆:

var textinputs = document.querySelectorAll('input[type=checkbox]'); 
var empty = [].filter.call(textinputs, function(el) { 
    return !el.checked 
}); 

if (textinputs.length == empty.length) { 
    alert("None filled"); 
    return false; 
} 
+1

感謝。效果很好。沒有意識到會有這麼小的差異 – user2014429 2013-02-10 18:58:33

+1

document.querySelectorAll(「#divWeeklyDays input [type ='checkbox']:checked」); – 2015-03-17 16:14:40

+0

這也適用於jQuery。而不是'document.querySelectorAll','$('。get_some_class')'也可以工作 – 2017-05-12 21:37:41

11

可以簡化一點,因爲你能夠使用querySelectorAll()

var checked = document.querySelectorAll('input:checked'); 

if (checked.length === 0) { 
    // there are no checked checkboxes 
    console.log('no checkboxes checked'); 
} else { 
    // there are some checked checkboxes 
    console.log(checked.length + ' checkboxes checked'); 
} 

JS Fiddle (with no checkboxes checked)

JS Fiddle (with some checkboxes checked)

或者,如果你想要的是一個布爾值,表示任何複選框是否被選中,用在一個函數:

var isChecked = document.querySelectorAll('input:checked').length === 0 ? false : true; 
return isChecked; 

Proof-of-concept demo

你當然可以避免創建一個變量並簡單地返回三元結果;我只使用這個變量來試圖清楚地說明,我正在返回/測試。

參考:

+1

感謝您的鏈接,我會'檢查'出來。 – user2014429 2013-02-10 19:00:04

+0

非常歡迎! – 2013-02-10 19:00:55

+0

我不知道你可以做document.querySelectorAll('input:checked')那非常有用,謝謝!以前我使用的是document.querySelectorAll('input [type =「checkbox」] [checked]'),它沒有返回正確的結果。 – user280109 2014-10-18 23:47:32

0

我會建議名稱間距與class和id

var checked = document.querySelectorAll('input.myClassName:checked'); 

//or 

var checked = document.querySelectorAll('input#myIdName:checked'); 

if (checked.length === 0) { 

    console.log('no checkboxes checked'); 
} else { 

    console.log(checked.length + ' checkboxes checked'); 
} 
0

這對我的作品, 給你所有的複選框一類名字,然後

 if ($('.ClassName:checked').length == 0) { 
      // do your job 
     }