2013-02-10 15 views
6

Próbuję wykonać funkcję, aby sprawdzić, czy wszystkie pola wyboru są odznaczone. Mam podobną funkcję dla pól tekstowych. Ponieważ nie pracowałem wcześniej z polami o wiele wcześniej, nie jestem pewien, jak to zmienić, oprócz zmiany wejścia [type = text] na input [type = checkbox]. Czy ktoś może mi pomóc? Dzięki.Jak sprawdzić, czy wszystkie pola wyboru są odznaczone?

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; 
} 

Odpowiedz

10

Poniższy powinno załatwić sprawę:

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

dzięki za to. działa świetnie. nie zdawałem sobie sprawy, że będzie taka niewielka różnica: – user2014429

+1

document.querySelectorAll ("# divWeeklyDays input [type = 'checkbox']: checked"); –

+0

to również działa przy użyciu jQuery. zamiast 'document.querySelectorAll',' $ ('. get_some_class') 'działa też –

11

można uprościć niewiele, biorąc pod uwagę, że jesteś w stanie wykorzystać 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).

Albo, jeśli wszystko co chcesz jest wartością logiczną, aby wskazać, czy jest zaznaczone pole wyboru, do stosowania w funkcji:

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

Proof-of-concept demo.

Można oczywiście uniknąć tworzenia zmiennej i po prostu zwrócić wynik potrójnego; Użyłem tylko tej zmiennej, aby spróbować wyjaśnić, co dokładnie zwróciłem/przetestowałem.

referencyjny:

+1

dziękuję za linki i" sprawdzę "je. – user2014429

+0

Serdecznie witamy! –

+0

Nie wiedziałem, że możesz zrobić document.querySelectorAll ("input: checked"), to bardzo przydatne, dzięki! poprzednio używałem document.querySelectorAll ('input [type = "checkbox"] [checked]') i nie zwracało poprawnych wyników. – user280109

0

Polecam odstępy nazwy z klasy lub 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

Działa to dla mnie dać wszystkim swoim wyboru jedną nazwę klasy następnie:

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