jQuery로 확인란이 선택되어 있는지 확인하십시오.


1187

확인란 배열의 ID를 사용하여 확인란 배열의 확인란을 선택했는지 어떻게 확인할 수 있습니까?

다음 코드를 사용하고 있지만 ID에 관계없이 항상 확인란의 수를 반환합니다.

function isCheckedById(id) {
    alert(id);
    var checked = $("input[@id=" + id + "]:checked").length;
    alert(checked);

    if (checked == 0) {
        return false;
    } else {
        return true;
    }
}

체크 박스 배열 ? 그런 말을 들어 본 적이 없습니다. JQuery와 관련이 있습니까, 아니면 플러그인 / 위젯입니까?
Pekka

2
확인란 배열은 <input type = "checkbox"name = "chk []"id = "chk []"value = "apple"> <input type = "checkbox"name = "chk []"id = "chk []"value = "banana"> <input type = "checkbox"name = "chk []"id = "chk []"value = "orange"> 등.
Jake

2
확인란 배열에 어떤 문제가 있습니까? "해당 항목을 모두 확인하십시오"입력을 어떻게 수행 하시겠습니까?
nickf

5
id의 고유한지 확인하십시오 ! name반복 할 수는 있지만 id! 를 복제하면 많은 이상한 일이 발생합니다 ! = D
Jeff Rupert

작동하려면 "@"를 제거해야했습니다. 또한 마지막 5 줄을 1로 축소 할 수 있습니다. return (체크!! = 0);
B. Clay Shannon

답변:


688

ID는 문서에서 고유해야합니다. 즉, 이렇게하면 안됩니다 .

<input type="checkbox" name="chk[]" id="chk[]" value="Apples" />
<input type="checkbox" name="chk[]" id="chk[]" value="Bananas" />

대신 ID를 삭제 한 다음 이름 또는 포함 요소로 선택하십시오.

<fieldset id="checkArray">
    <input type="checkbox" name="chk[]" value="Apples" />

    <input type="checkbox" name="chk[]" value="Bananas" />
</fieldset>

그리고 이제 jQuery :

var atLeastOneIsChecked = $('#checkArray:checkbox:checked').length > 0;
//there should be no space between identifier and selector

// or, without the container:

var atLeastOneIsChecked = $('input[name="chk[]"]:checked').length > 0;

나를 위해 입력 이름에 큰 따옴표없이 작업했습니다 : input [name = multiplecheck []] : checked, 감사합니다!
Alejandro Quiroz 1

30
$('#checkArray :checkbox:checked').length > 0;더 간단한 $('#checkArray').checked버전으로 사용할 수 있고 더 많은 버전에서 사용할 수 있는 이유는 무엇 입니까?
Don Cheadle

5
@Oddman은 jquery 객체가 아니라 작동합니다. $ (elem) .checked 대신 elem.checked를 시도하십시오.
Dan Williams

1
@ Dananilliams는 예이지만 mmcrae가주지 않은 예입니다.
Oddman

두 번째는 나를 위해 일했습니다. 감사!! var atLeastOneIsChecked = $('input[name="chk[]"]:checked').length > 0;
David Silva-Barrera

2025
$('#' + id).is(":checked")

확인란을 선택하면 표시됩니다.

이름이 같은 체크 박스 배열의 경우 다음을 통해 체크 박스를 확인할 수 있습니다.

var $boxes = $('input[name=thename]:checked');

그런 다음 반복해서 확인한 내용을 확인하십시오.

$boxes.each(function(){
    // Do stuff here with this
});

확인 된 수를 찾으려면 다음을 수행하십시오.

$boxes.length;

2
또 다른 방법은입니다 $('#'+id).attr('checked'). 이는 $('#' + id).is(":checked")IMO 와 동일 하지만 기억하기 쉽습니다.
Zubin

85
@ 주빈 : 조심하세요 .attr('checked'). jQuery 1.6에서 동작이 변경되었습니다. 그것은 반환하는 데 사용 false하거나 true. 지금은 반환 undefined또는 "checked". .is(':checked')이 문제가 없습니다.
Joey Adams

1
@ John Boker : necro 의견에 대해 죄송하지만 왜 $('.ClassName').is(':checked')작동하지 않는 것 같지만 $('#' + id).is(":checked")작동합니까? 하나는 id로, 하나는 classname으로 조회한다는 사실을 제외하고.
Mike_OBrien

@Mike_OBrien 문제는 클래스 이름이있는 확인란이 두 개 이상있을 수 있습니다. is ( ': checked')는 실제로 하나의 요소에서만 작동합니다.
John Boker

5
참고 : size ()는 jQuery 1.8 이후로 더 이상 사용되지 않습니다. 대신 .length 사용
JM4

312
$('#checkbox').is(':checked'); 

위의 코드는 확인란을 선택하면 true를, 그렇지 않으면 false를 반환합니다.


7
$ (this) .is ( ': checked')를 사용할 때 매우 유용합니다; 감사!
PinoyStackOverflower 7:29에

이 방법은 확인란을 선택했는지 확인하는 데 도움이됩니다. 확인란을 선택하는 방법을 알고 있다면 감사합니다.
Omar Isaid

이것은 나를 위해 일 var isChecked = $('#CheckboxID').attr('checked') ? true : false; 했지만 이전에 이것을 사용 했지만 항상 올바른 값을 반환하지는 않았습니다. 감사합니다!
leiit

120

다음 방법이 모두 유용합니다.

$('#checkbox').is(":checked")

$('#checkbox').prop('checked')

$('#checkbox')[0].checked

$('#checkbox').get(0).checked

DOM 요소 또는 인라인 "this.checked"는 피하는 것이 좋으며 대신 메소드의 jQuery는 이벤트 리스너를 사용해야합니다.


98

확인란이 선택되어 있는지 여부를 확인하는 jQuery 코드 :

if($('input[name="checkBoxName"]').is(':checked'))
{
  // checked
}else
{
 // unchecked
}

또는

if($('input[name="checkBoxName"]:checked'))
{
    // checked
}else{
  // unchecked
}

4
첫 번째 해결책이 없습니다 :... 올바른 해결책 은 다음과 같습니다 if(('input[name="checkBoxName"]').is(':checked'))..
Aerendir

달러 기호 ($)가 누락되었습니다 if($('input[name="checkBoxName"]').is(':checked')).
페니 리우

elsejQuery 객체는 일치하는 요소가없는 경우에도 "truthy"이므로 두 번째 객체 는 블록을 실행 하지 않습니다. .length끝에 추가 하면 이야기하고 있습니다.
Heretic Monkey

69

checked 속성에 대해 기억해야 할 가장 중요한 개념은 checked 속성과 일치하지 않는다는 것입니다. 이 속성은 실제로 defaultChecked 속성에 해당하며 확인란의 초기 값을 설정하는 데만 사용해야합니다. checked 속성 값은 확인란의 상태에 따라 변경되지 않지만 checked 속성은 변경됩니다. 따라서 확인란이 선택되어 있는지 확인하는 브라우저 간 호환 방법은 속성을 사용하는 것입니다.

아래의 모든 방법이 가능합니다

elem.checked 

$(elem).prop("checked") 

$(elem).is(":checked") 

38

이 코드를 사용할 수 있습니다

if($("#checkboxId").is(':checked')){
     // Code in the case checkbox is checked.
} else {
     // Code in the case checkbox is NOT checked.
}

29

jQuery 문서에 따라 확인란을 선택했는지 여부를 확인하는 방법은 다음과 같습니다. 예를 들어 확인란을 고려하십시오 ( 모든 예제에서 작동하는 jsfiddle 확인 )

<input type="checkbox" name="mycheckbox" id="mycheckbox" />
<br><br>
<input type="button" id="test-with-checked" value="Test with checked" />
<input type="button" id="test-with-is" value="Test with is" />
<input type="button" id="test-with-prop" value="Test with prop" />

예 1-선택된 상태

$("#test-with-checked").on("click", function(){
    if(mycheckbox.checked) {
        alert("Checkbox is checked.");
    } else {
        alert("Checkbox is unchecked.");
    }
}); 

예제 2-jQuery를 사용하는 경우 NOTE-: checked

var check;
$("#test-with-is").on("click", function(){
    check = $("#mycheckbox").is(":checked");
    if(check) {
        alert("Checkbox is checked.");
    } else {
        alert("Checkbox is unchecked.");
    }
}); 

예 3-jQuery prop 사용

var check;
$("#test-with-prop").on("click", function(){
    check = $("#mycheckbox").prop("checked");
    if(check) {
         alert("Checkbox is checked.");
    } else {
        alert("Checkbox is unchecked.");
    }
}); 

작동하는 jsfiddle 확인


26

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

<script>
function checkAllCheckBox(value)
{
   if($('#select_all_').is(':checked')){
   $(".check_").attr ( "checked" ,"checked" );
    }
    else
    {
        $(".check_").removeAttr('checked');
    }

 }

</script>
<input type="checkbox" name="chkbox" id="select_all_" value="1" />


<input type="checkbox" name="chkbox" class="check_" value="Apples" />
<input type="checkbox" name="chkbox" class="check_" value="Bananas" />
<input type="checkbox" name="chkbox" class="check_" value="Apples" />
<input type="checkbox" name="chkbox" class="check_" value="Bananas" />

attrDOM의 속성 값이 아닌 HTML의 속성 값만 반영하므로 더 이상 좋은 방법이 아닙니다. 참조 설명서attr 는 말한다, "검색과 같은 같은 변화의 DOM 속성을하려면 checked, selected또는 disabled폼 요소의 상태, 사용 .prop()방법을.", 그리고 설명서prop 가 말한다는 " .prop()방법은 세트에 사용되어야 disabled하고 checked대신 의 .attr()방법. "
Heretic Monkey

21

jquery에서 다음 권장 코드 중 하나를 사용할 수 있습니다.

if ( elem.checked ) {};
if ( $( elem ).prop( "checked" ) ) {};
if ( $( elem ).is( ":checked" ) ) {};

20

OP가 jquery를 원한다는 것을 알고 있지만 내 경우에는 순수한 JS가 답이므로 나와 같은 사람이 여기 있고 jquery가 없거나 사용하지 않으려는 경우 JS 답변이 있습니다.

document.getElementById("myCheck").checked

ID가 myCheck 인 입력을 확인하면 true를, 확인하지 않으면 false를 반환합니다.

그렇게 간단합니다.


11
$("#myCheck")[0].checkedjquery에서 작동 한다는 의미입니다 ! : D
Sancarn

10

당신은 간단하게 그것을 할 수 있습니다;

일 바이올린

HTML

<input id="checkbox" type="checkbox" />

jQuery

$(document).ready(function () {
    var ckbox = $('#checkbox');

    $('input').on('click',function () {
        if (ckbox.is(':checked')) {
            alert('You have Checked it');
        } else {
            alert('You Un-Checked it');
        }
    });
});

또는 더 간단합니다.

$("#checkbox").attr("checked") ? alert("Checked") : alert("Unchecked");

checkbox선택하면 true그렇지 않으면 반환 됩니다undefined


or even simpler;->$("#checkbox").checked
Don Cheadle

10

이것은 또한 내가 자주 사용하는 아이디어입니다.

var active = $('#modal-check-visible').prop("checked") ? 1 : 0 ;

씹으면 1을 반환합니다. 그렇지 않으면 0을 반환합니다.


7

확인란을 확인하고 설정하기위한 간단한 데모.

jsfiddle !

$('.attr-value-name').click(function() {
    if($(this).parent().find('input[type="checkbox"]').is(':checked'))
    {
        $(this).parent().find('input[type="checkbox"]').prop('checked', false);
    }
    else
    {
        $(this).parent().find('input[type="checkbox"]').prop('checked', true);
    }
});

7

내 예에서 말하자면 상황은 대화 상자이며 대화 상자를 닫기 전에 확인란을 확인했습니다. 위의 어느 것도 없으며 jQuery에서 확인란이 선택되어 있는지 확인하는 방법은 무엇입니까? jQuery를 확인란이 선택되어있는 경우 중 하나가 작동을하지 않은 것으로 보입니다.

결국

<input class="cb" id="rd" type="checkbox">
<input class="cb" id="fd" type="checkbox">

var fd=$('.cb#fd').is(':checked');
var rd= $('.cb#rd').is(':checked');

이렇게하면 클래스를 호출 한 다음 ID를 호출했습니다. ID가 아닌 이 페이지의 중첩 된 DOM 요소로 인해 문제가 발생할 수 있습니다. 해결 방법은 위에있었습니다.


6

ID가있는 확인란의 경우

<input id="id_input_checkbox13" type="checkbox"></input>

당신은 단순히 할 수 있습니다

$("#id_input_checkbox13").prop('checked')

위의 구문에 대한 반환 값을 얻 true거나 얻을 수 false있습니다. if 절에서 일반 부울 식으로 사용할 수 있습니다.


5

이와 같은 것이 도움이 될 수 있습니다

togglecheckBoxs =  function( objCheckBox ) {

    var boolAllChecked = true;

    if( false == objCheckBox.checked ) {
        $('#checkAll').prop( 'checked',false );
    } else {
        $( 'input[id^="someIds_"]' ).each( function( chkboxIndex, chkbox ) {
            if( false == chkbox.checked ) {
                $('#checkAll').prop( 'checked',false );
                boolAllChecked = false;
            }
        });

        if( true == boolAllChecked ) {
            $('#checkAll').prop( 'checked',true );
        }
    }
}

5

실제로 jsperf.com 에 따르면 DOM 작업이 가장 빠르다가 $ (). prop () 다음에 $ (). is () !!

구문은 다음과 같습니다.

var checkbox = $('#'+id);
/* OR var checkbox = $("input[name=checkbox1]"); whichever is best */

/* The DOM way - The fastest */
if(checkbox[0].checked == true)
   alert('Checkbox is checked!!');

/* Using jQuery .prop() - The second fastest */
if(checkbox.prop('checked') == true)
   alert('Checkbox is checked!!');

/* Using jQuery .is() - The slowest in the lot */
if(checkbox.is(':checked') == true)
   alert('Checkbox is checked!!');

나는 개인적으로 선호합니다 .prop(). 와 달리 .is()값을 설정하는 데에도 사용할 수 있습니다.


4

체크 박스 전환 체크

$("#checkall").click(function(){
    $("input:checkbox").prop( 'checked',$(this).is(":checked") );
})

2

이 코드를 사용하면 다른 확인란 그룹 또는 여러 확인란에서 하나 이상의 확인란이 선택되어 있는지 확인할 수 있습니다. 이를 사용하면 ID 또는 동적 ID를 제거 할 필요가 없습니다. 이 코드는 동일한 ID로 작동합니다.

참조 링크

<label class="control-label col-sm-4">Check Box 2</label>
    <input type="checkbox" name="checkbox2" id="checkbox21" value=ck1 /> ck1<br />
    <input type="checkbox" name="checkbox2" id="checkbox22" value=ck2 /> ck2<br />

<label class="control-label col-sm-4">Check Box 3</label>
    <input type="checkbox" name="checkbox3" id="checkbox31" value=ck3 /> ck3<br />
    <input type="checkbox" name="checkbox3" id="checkbox32" value=ck4 /> ck4<br />

<script>
function checkFormData() {
    if (!$('input[name=checkbox2]:checked').length > 0) {
        document.getElementById("errMessage").innerHTML = "Check Box 2 can not be null";
        return false;
    }
    if (!$('input[name=checkbox3]:checked').length > 0) {
        document.getElementById("errMessage").innerHTML = "Check Box 3 can not be null";
        return false;
    }
    alert("Success");
    return true;
}
</script>

기본 정보 : html 요소 ID는 반복되지 않습니다 (예 : id = "checkbox2", id = "checkbox3"). 이것은 좋은 습관이 아닙니다. 한 페이지에서 수업을 여러 번 사용할 수 있습니다.
Anand Somasekhar

1

2019 년 중반부터 jQuery는 VueJS, React 등과 같은 것들에 뒤지지 않습니다. 순수한 바닐라 자바 ​​스크립트 onload 리스너 옵션은 다음과 같습니다.

<script>
  // Replace 'admincheckbox' both variable and ID with whatever suits.

  window.onload = function() {
    const admincheckbox = document.getElementById("admincheckbox");
    admincheckbox.addEventListener('click', function() {
      if(admincheckbox.checked){
        alert('Checked');
      } else {
        alert('Unchecked');
      }
    });
  }
</script>

0

귀하의 질문은 분명하지 않습니다 : 입력시 "확인란 배열 ID"를 제공하고 true/false출력을 얻으려고합니다 .이 방법으로 (함수 이름에서 알 수 있듯이) 어떤 확인란이 선택되었는지 알 수 없습니다. 아래에는 isCheckedById입력시 체크 박스 id와 출력 반환시 본문이 제안되어 있습니다 true/false(매우 간단하지만 ID는 키워드가 아니어야 함),

this[id].checked


-7

아래 코드를 사용하십시오

<script>

$(document).ready(function () {
  $("[id$='chkSendMail']").attr("onchange", "ShowMailSection()");
}

function ShowMailSection() {
  if ($("[id$='chkSendMail'][type='checkbox']:checked").length >0){
      $("[id$='SecEmail']").removeClass("Hide");
  }
</script>

정말? 어때요$(function() { $("[id$='chkSendMail']").on("change", ShowMailSection); });
mplungjan

그리고 그것들은 모두 체크 박스이므로 $("[id$='chkSendMail']:checked]")제대로 작동합니다
mplungjan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.