jQuery는 확인란이 선택되어 있는지 확인합니다.


126

개별 확인란이 선택되어 있는지 확인하는 방법을 알고 있습니다.

그러나 Im은 다음과 같은 문제가 있습니다-양식 ID가 주어지면 확인란 하나가 선택 되어 있는지 확인해야합니다 (예 : 1 이상), 선택 되지 않은 것이 있는지 확인해야합니다 . 기본적으로 나는이 두 질문에 답하는 두 개의 별도 기능이 필요합니다. 도움을 주시면 감사하겠습니다. 감사!

실제로, 아무것도 선택 되지 않았 는지 알려주는 기능이 필요합니다 . 이것을 아는 것은 다른 질문에 대답 할 것입니다.


답변:


246

이런 식으로 사용할 수 있습니다

if ($("#formID input:checkbox:checked").length > 0)
{
    // any one is checked
}
else
{
   // none is checked
}

8
$("#formID input:checkbox:checked").length여기에서도 충분할 것입니다
Damon

난 당신이 의미 추측 @Damon if ($("#formID input:checkbox:checked").length){}합니다 (없이 >0) 0이 falsey 값이기 때문에, 충분할 것이다 참조 james.padolsey.com/javascript/truthy-falsey
아드는 수

11
jQuery는 :checkbox선택자 에 대해 말합니다 : For better performance in modern browsers, use [type="checkbox"], api.jquery.com/checkbox-selector 참조 -라디오 버튼과 동일 btw, use [type="radio"] rather than :radio api.jquery.com/radio-selector
Adrien Be

27

JQuery .is는 지정된 모든 요소를 ​​테스트하고 그 중 하나 이상이 선택자와 일치하면 true를 반환합니다.

if ($(":checkbox[name='choices']", form).is(":checked"))
{
    // one or more checked
}
else
{
    // nothing checked
}

Althought는 is()데, 작동하는 것 같다 :checked@ 라훌의 대답에 표시된 더 적절한 보인다 선택기에서 직접. is ()는 "내부 콜백"일 때 더 유용합니다 . api.jquery.com/is를 참조하십시오 . 아니면 뭔가 빠졌습니까?
Adrien 수

아니요, 문서로 작성된 것과 거의 같습니다. 요소가 지정된 속성과 일치하는지 확인합니다. 필터로 적용 한 다음 결과로 적어도 하나의 항목을 얻었는지 확인하는 것은 동일하지만 더 길고 표현력이 없습니다.
Michael Logutov

사실 +1 .is(":checked")솔루션에 불구하고 나머지에 대해 확실하지, 더 표현이다.
Adrien 수

$("form input[type=checkbox]").is(":checked"), 더 단순하고 일반적인 접근법 일 수 있습니다.
Adrien

@AdrienBe 사용하면 is성능이 향상 될 수 있습니다.
ChrisW

8

당신은 이것을 할 수 있습니다 :

  if ($('#form_id :checkbox:checked').length > 0){
    // one or more checkboxes are checked
  }
  else{
   // no checkboxes are checked
  }

어디:

  • :checkbox 필터 선택기는 모든 확인란을 선택합니다.
  • :checked 체크 박스를 선택합니다
  • length 거기에 체크 된 것들의 수를 줄 것입니다

jQuery를이에 관한 말한다 :checkbox선택 : For better performance in modern browsers, use [type="checkbox"]참조 api.jquery.com/checkbox-selector
아드는 수

6

이것은 확인란 목록의 확인란이 변경되었는지 확인하는 데 사용한 것입니다.

$('input[type="checkbox"]').change(function(){ 

        var itemName = $('select option:selected').text();  

         //Do something.

});     

6

'길이'를 사용하지 않으면 다음과 같이 할 수 있습니다.

if ($('input[type=checkbox]').is(":checked")) {
      //any one is checked
}
else {
//none is checked
}

3

.length여기 에서 간단한 반환을 할 수 있습니다.

function areAnyChecked(formID) {
  return !!$('#'+formID+' input[type=checkbox]:checked').length;
}

어떤 경우, 지정된 형태의 체크 박스에 대한이 모습은,보고 :checked및 반환 true(길이 그렇지 않으면 0이 될 것이기 때문이다)가있는 경우. 좀 더 명확하게하기 위해 부울 변환되지 않은 버전은 다음과 같습니다.

function howManyAreChecked(formID) {
  return $('#'+formID+' input[type=checkbox]:checked').length;
}

이것은 몇 개가 체크되었는지를 반환합니다.


3

Rahul의 답변이 귀하의 질문에 가장 적합합니다. 어쨌든, 체크 박스 그룹을 선택하고 양식의 모든 확인란이 아닌 경우 선택할 수 있습니다.

예를 들어 클래스 이름 test_check과 같이 확인하려는 모든 확인란의 클래스 이름을 입력하면 다음 을 통해 그룹에 속하는 확인란이 선택되어 있는지 확인할 수 있습니다.

$("#formID .test_check:checked").length > 0

반환 true되면 클래스 이름을 가진 하나 이상의 확인란이 선택 test_check되고 반환되면 선택되지 않은 것으로 가정 합니다 false.

그것이 누군가를 돕기를 바랍니다. 감사 :)-


1

이것이이 문제를 해결하는 가장 좋은 방법입니다.

  if($("#checkbox").is(":checked")){

  // Do something here /////

  };

안녕하세요, StackOverflow에 오신 것을 환영합니다. 아마도 문제를 해결하는 "최상의 방법"인 이유는 분명하지 않기 때문에 답을 조금 더 설명 할 수 있습니다.
dddJewelsbbb
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.