jQuery에서 확인란이 선택되어 있는지 어떻게 확인합니까?


4548

확인란의 checked속성 을 확인하고 jQuery를 사용하여 선택된 속성을 기반으로 작업을 수행해야합니다.

예를 들어 연령 확인란을 선택한 경우 연령을 입력하려면 텍스트 상자를 표시하고 그렇지 않으면 텍스트 상자를 숨겨야합니다.

그러나 다음 코드는 false기본적으로 반환 됩니다.

if ($('#isAgeSelected').attr('checked'))
{
    $("#txtAge").show();
}
else
{
    $("#txtAge").hide();
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

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

<div id="txtAge" style="display:none">
Age is selected
</div>

checked속성을 성공적으로 쿼리하려면 어떻게합니까 ?


14
$ ( '# isAgeSelected')는 컬렉션을 반환하고 다음과 같이 바꿉니다 : $ ( '# isAgeSelected') [0] .checked
zamoldar

14
왜 안$('#isAgeSelected').checked
Don Cheadle

1
포괄적이고 정확한 답변은 다음을 참조하십시오. stackoverflow.com/questions/426258/…
Paul Kenjora

12
jQuery 선택기가 배열을 반환하므로 다음을 사용할 수 있습니다.$('#isAgeSelected')[0].checked
Felipe Leão

2
나를 위해 다음 팅겨 일 : .attr 교체 ( '확인') 됐나과 ( '확인')
마크 N Hopgood에게

답변:


3432

확인 된 속성을 성공적으로 쿼리하려면 어떻게합니까?

checked확인란 DOM 요소 의 속성은 요소의 checked상태를 제공합니다 .

기존 코드가 주어지면 다음과 같이 할 수 있습니다.

if(document.getElementById('isAgeSelected').checked) {
    $("#txtAge").show();
} else {
    $("#txtAge").hide();
}

그러나 다음을 사용하여 훨씬 더 좋은 방법이 있습니다 toggle.

$('#isAgeSelected').click(function() {
    $("#txtAge").toggle(this.checked);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" id="isAgeSelected"/>
<div id="txtAge" style="display:none">Age is something</div>


36
나도 위의 조건을 시도했지만 거짓 만 반환합니다
Prasad

24
$ ( "# txtAge"). toggle (this.checked); $ ( "# txtAge"). toggle ()과 정확히 동일합니다. 따라서 어떤 이유로 상태가 확인되고 다음 div가 숨겨지면 (브라우저에서 뒤로 버튼을 클릭 한 경우) 예상대로 작동하지 않습니다.
Maksim Vi.

23
@Chiramisu-답을 끝까지 읽었다면 내 편집 내용이 is(':checked')비즈니스를 사용하지 않는 것을 알 수 있습니다.
karim79

8
설정 : $ ( "# chkmyElement") [0] .checked = true; 얻는 방법 : if ($ ( "# chkmyElement") [0] .checked)
JJ_Coder4Hire

28
이것은 질문에 대한 답변이 아닙니다. this.checkedOP가 요청한 것처럼 jQuery가 아닙니다. 또한 사용자가 질문의 일부가 아닌 확인란을 클릭 할 때만 작동합니다. 질문은 How to check whether a checkbox is checked in jQuery?확인란을 클릭하거나 jQuery를 사용하거나 사용하지 않고 언제든지 언제든지 가능합니다.
Marc Compte

1846

jQuery의 is () 함수를 사용하십시오 .

if($("#isAgeSelected").is(':checked'))
    $("#txtAge").show();  // checked
else
    $("#txtAge").hide();  // unchecked

19
당신이 등 기간 완화가 필요하지 않은 경우, 당신은 사용할 수 있습니다 $("#txtAge").toggle($("#isAgeSelected").is(':checked'))
naor

13
+1 속성을 확인하는 다른 방법이 있습니다. 일부가 여기
user3199690

@NickG는 사실 jQuery를이 수행: 눈에 보이는 선택을
HVDD

2
@hvdd 알아요-선택자가 아니라 "속성"이라고 말했습니다.
NickG

@NickG ... 나는 당신이 무슨 뜻인지 이해하지 못합니다. HTML 요소가 보이지 않는 속성 이 있기 때문에 jQuery에는 .visible"속성" 이 없습니다 ( 속성 ? 메소드 를 의미 합니까?) . 그들은이 스타일의 속성을 그리고 좀 더 복잡한 온 / 오프 이상입니다. display
xDaizu

566

jQuery 사용> 1.6

<input type="checkbox" value="1" name="checkMeOut" id="checkMeOut" checked="checked" />

// traditional attr
$('#checkMeOut').attr('checked'); // "checked"
// new property method
$('#checkMeOut').prop('checked'); // true

새로운 속성 방법 사용하기 :

if($('#checkMeOut').prop('checked')) {
    // something when checked
} else {
    // something else when not
}

27
왜 이것이 대답이 아닌지 알고 싶습니다 ... jquery를 전혀 사용하지 않는다면 .prop방법은 소품을 확인 하는 설계된 방법입니다. .. ... .is(":checked")접근 방식 을 수행하려는 경우에는 문제가 없지만 jquery를 사용하여 설계된 방식은 아닙니다. 권리?
dsdsdsdsd

1
@dsdsdsdsd는 또 다른 이전 버전과의 호환성 단계가 필요하기 때문에 아마도 지금 (같은 문제에 직면하고 있습니다).
user98085

18
.is(":checked").prop("checked")jQuery를 동일한 결과를 얻기 모두 유효한 방법입니다 .is모든 버전에서 작동이 .prop1.6 필요
gnarf

당신이 사용하는 경우 .attr('checked')jQuery를 1.11.3에, 당신은 당신이 사용하는 경우, 여기서 정의되지 않은 얻을 .prop('checked'), 당신은 참 / 거짓의를 얻을 수 있습니다. 이전 브라우저가 도입 .prop()되어 필요한 jQuery 버전을 지원할 수 없을 때 왜 이런 방식으로 작동하도록 변경했는지 알 수 없습니다 .attr(). 유일하게 절약되는 유예는 이전 브라우저 (예 : IE 8)가> jQuery 1.9를 지원할 수 없다는 것입니다. 잘만되면 그들은 .attr('checked')그 버전에서 이것을하지 않았다 (make = undefined)! 다행히도 항상 this.checked있습니다.
vapcguy

230

jQuery 1.6 이상

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

jQuery 1.5 이하

$('#isAgeSelected').attr('checked')

모든 버전의 jQuery

// Assuming an event handler on a checkbox
if (this.checked)

모든 크레딧은 시안으로 갑니다 .


8
기술적 this.checked으로 Javascript를 사용하고 있습니다. 그러나 나는 jQuery 버전의 교차 답변을 좋아합니다!
vapcguy 2016 년

170

나는 이것을 사용하고 있으며 이것은 절대적으로 잘 작동합니다.

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

참고 : 확인란을 선택하면 정의되지 않은 경우 true를 반환하므로 "TRUE"값을 확인하는 것이 좋습니다.


6
$ ( "# checkkBoxId"). attr ( "checked")가 "checked"또는 ""(빈 문자열)를 반환하기 때문에 작동합니다. 그리고 빈 문자열은 거짓이고, 비어 있지 않은 문자열은 진실입니다. 진실 / 거짓 값을 참조하십시오 docs.nodejitsu.com/articles/javascript-conventions/…
Adrien Be

7
jquery 2.1.x에 의해 기본적으로 체크되어 있으면 항상 체크되어 반환됩니다 ...이 동작이 의도적인지 모르겠지만 확실히 작동하지 않습니다 (버그라고 생각합니다) ... val () 작동하지 않으면 "켜져"있습니다. prop ()가 제대로 작동하고 dom.checked도 작동합니다.
inf3rno

1
그리고 문제는와 함께 오래된 브라우저를 지원해야 할 때 발생합니다 .attr()! 그들이 단지 충분히 혼자 떠났다면 .... 여기에서 또 다른 대답을 찾았다면 this.checked기본적으로 Javascript이기 때문에 jQuery 간 솔루션에 사용할 수 있다고 말했다 .
vapcguy

.attr ( 'checked')는 기본적으로 체크되어 있는지 테스트합니다. 현재 상태가 아닌 html 속성을 확인하고 있기 때문입니다 . 이전 버전은 버그였습니다 (많은 악용되었지만 버그라고 생각합니다).
Jay Irvine

149

사용하다:

<input type="checkbox" name="planned_checked" checked id="planned_checked"> Planned

$("#planned_checked").change(function() {
    if($(this).prop('checked')) {
        alert("Checked Box Selected");
    } else {
        alert("Checked Box deselect");
    }
});

    $("#planned_checked").change(function() {
        if($(this).prop('checked')) {
            alert("Checked Box Selected");
        } else {
            alert("Checked Box deselect");
        }
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="checkbox" name="planned_checked" checked id="planned_checked"> Planned


119

jQuery 1.6부터는 동작 jQuery.attr()이 변경되었으며 사용자는이를 사용하여 요소의 확인 된 상태를 검색하지 않는 것이 좋습니다. 대신 다음을 사용해야합니다 jQuery.prop().

$("#txtAge").toggle(
    $("#isAgeSelected").prop("checked") // For checked attribute it returns true/false;
                                        // Return value changes with checkbox state
);

다른 두 가지 가능성은 다음과 같습니다.

$("#txtAge").get(0).checked
$("#txtAge").is(":checked")

and $ ( "# txtAge") [0] .checked
Yevgeniy Afanasyev 님이

101

이것은 나를 위해 일했다 :

$get("isAgeSelected ").checked == true

isAgeSelected컨트롤의 ID는 어디에 있습니까 ?

또한 @ karim79의 답변 이 잘 작동합니다. 테스트 할 때 놓친 부분이 확실하지 않습니다.

참고, 이것은 jQuery가 아닌 Microsoft Ajax를 사용하는 답변입니다.


4
모든 경우에, 모든 일반 프로그래밍 언어에서, 당신은 생략 할 수 있습니다== true
RedPixel

@RedPixel nullable 유형을 다루지 않는 한. :) (pedantic smiley)
Kolob Canyon

88

업데이트 된 버전의 jquery를 사용하는 경우 .prop문제를 해결 하는 방법을 찾아야합니다 .

$('#isAgeSelected').prop('checked')true선택하고 false선택하지 않으면 반환 됩니다 . 나는 그것을 확인 하고이 문제를 더 일찍 보았습니다. $('#isAgeSelected').attr('checked')$('#isAgeSelected').is('checked')반환 undefined상황에 대한 가치있는 대답하지 않은. 아래에 주어진대로하십시오.

if($('#isAgeSelected').prop('checked')) {
    $("#txtAge").show();
} else {
    $("#txtAge").hide();
}

그것이 도움이되기를 바랍니다 :)-감사합니다.


왜 안돼 $('#isAgeSelected').checked?
Don Cheadle

1
.is를 사용하려면 콜론이 필요합니다 $ ( '# isAgeSelected'). is ( ': checked')
Patrick

62

이벤트 처리기 자체를 실행하는 동안 속성이 변경 될 수 Click있으므로 checkbox 속성에 이벤트 처리기를 사용하는 것은 신뢰할 수 없습니다 checked!

이상적으로, 당신은에 코드를 넣어 싶어 change이 (독립적 인 체크 박스의 값이 변경 될 때마다 해고 등의 이벤트 처리기 방법 이 그렇게 것을).

$('#isAgeSelected').bind('change', function () {

   if ($(this).is(':checked'))
     $("#txtAge").show();
   else
     $("#txtAge").hide();
});

3
jQuery 1.7부터이 .on()메소드는 이벤트 핸들러를 문서에 첨부하는 데 선호되는 메소드입니다.
naor

61

사용하다:

<input type="checkbox" id="abc" value="UDB">UDB
<input type="checkbox" id="abc" value="Prasad">Prasad
$('input#abc').click(function(){
  if($(this).is(':checked'))
  {
    var checkedOne=$(this).val()
    alert(checkedOne);

    // Do some other action
  }
})

이것은 검사를 제거 할 때가 아닌 상자를 선택했을 때만 필요한 조치를 수행해야하는 경우에 도움이 될 수 있습니다.


53

jQuery없이 똑같은 일을하는 방법에 대한 답변을 게시하기로 결정했습니다. 난 반역자니까

var ageCheckbox = document.getElementById('isAgeSelected');
var ageInput = document.getElementById('txtAge');

// Just because of IE <333
ageCheckbox.onchange = function() {
    // Check if the checkbox is checked, and show/hide the text field.
    ageInput.hidden = this.checked ? false : true;
};

먼저 ID로 두 요소를 얻습니다. 그런 다음 확인란의 onchange이벤트를 선택하여 확인란의 선택 여부를 확인 hidden하고 연령 텍스트 필드 의 속성을 적절하게 설정합니다. 이 예에서는 삼항 연산자를 사용합니다.

테스트 할 바이올린 이 여기 있습니다.

추가

브라우저 간 호환성이 문제라면 CSS display속성을 noneinline 으로 설정하는 것이 좋습니다.

elem.style.display = this.checked ? 'inline' : 'none';

느리지 만 크로스 브라우저와 호환됩니다.


글쎄, .hidden나는이 솔루션을 좋아하지만 매우 크로스 브라우저는 아닙니다 :)
Florian Margaine

실제로 사용하는 가장 좋은 방법 style입니다. 그러나 .hidden성능이 훨씬 우수하기 때문에 불행한 일 입니다.
Florian Margaine

조건부 연산자 내에 할당 하시겠습니까? 법적 으로요 그러나 내가 좋은 스타일이라고 부르는 것은 아닙니다.
Jules

ageInput.hidden =! this.checked; (사람들이 불필요하게 부울 리터럴을 사용하는 것이 싫습니다 ... 같은 간단한 문장에서 "참"과 "거짓"을 모두 사용하는 경우, 어느 쪽도 사용하지 않아도됩니다.
JoelFan

52

나는 당신이 이것을 할 수 있다고 믿습니다.

if ($('#isAgeSelected :checked').size() > 0)
{
    $("#txtAge").show(); 
} else { 
    $("#txtAge").hide();
}

alert ($ ( 'input [name = isAgeSelected]'). attr ( 'checked')); 위의 코드는 검사를 기반으로 참 / 거짓을 보여줍니다. 이전 시도와 관련된 문제
Prasad

Prasad, 이름이나 ID로 확인란을 참조하고 있습니까? 나는 ... 지금 혼란스러워지고있어
karim79

ID를 줄 수 없습니까? 일이 훨씬 쉬울 것입니다. 귀하의 예에서 ID로 주소를 정했습니다
xenon

.size () 메소드는 jQuery 1.8부터 사용되지 않습니다. 대신 .length ((;;)없이) 속성을 사용하십시오! 그리고 "#isAgeSelected : checked"를 함께 붙여야 할 수도 있습니다.
François Breton

47

나는 똑같은 문제에 부딪쳤다. ASP.NET 확인란이 있습니다

<asp:CheckBox ID="chkBox1" CssClass='cssChkBox1' runat="server" />

jQuery 코드에서 다음 선택기를 사용하여 확인란을 선택했는지 여부를 확인했으며 매력처럼 작동합니다.

if ($("'.cssChkBox1 input[type=checkbox]'").is(':checked'))
{ ... } else { ... }

CssClass 대신 ID를 사용할 수도 있습니다.

if ($("'#cssChkBox1 input[type=checkbox]'").is(':checked'))
{ ... } else { ... }

이것이 도움이되기를 바랍니다.


46

확인란이 선택되어 있는지 확인하는 방법에는 여러 가지가 있습니다.

jQuery를 사용하여 확인하는 방법

if (elem.checked)
if ($(elem).prop("checked"))
if ($(elem).is(":checked"))
if ($(elem).attr('checked'))

예를 확인하거나 문서화하십시오.


46

이 코드는 당신을 도울 것입니다

$('#isAgeSelected').click(function(){
   console.log(this.checked);
   if(this.checked == true) {
        $("#txtAge").show();
    } else {
       $("#txtAge").hide();
   }
});

42

이것은 나를 위해 작동합니다 :

/* isAgeSelected being id for checkbox */

$("#isAgeSelected").click(function(){
  $(this).is(':checked') ? $("#txtAge").show() : $("#txtAge").hide();
});

41

이것은 똑같은 일을하는 다른 방법입니다.

$(document).ready(function (){

    $('#isAgeSelected').click(function() {
        // $("#txtAge").toggle(this.checked);

        // Using a pure CSS selector
        if ($(this.checked)) {
            alert('on check 1');
        };

        // Using jQuery's is() method
        if ($(this).is(':checked')) {
            alert('on checked 2');
        };

        //  // Using jQuery's filter() method
        if ($(this).filter(':checked')) {
            alert('on checked 3');
        };
    });
});
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<input type="checkbox" id="isAgeSelected"/>
<div id="txtAge" style="display:none">Age is something</div>


35

이것을 사용하십시오 :

if ($('input[name="salary_in.Basic"]:checked').length > 0)

확인란을 선택하면 길이가 0보다 큽니다.


33

이 작업을 수행하는 방법은 다음과 같습니다.

if ( $("#checkbox:checked").length ) {       
    alert("checkbox is checked");
} else {
    alert("checkbox is not checked");
}

31
$(selector).attr('checked') !== undefined

true입력이 점검되고 false그렇지 않으면 리턴 합니다 .


4
.attr('checked')항상 올바른 상태를 반환하지는 않는 것과 같은 문제가 있지만 특정 시나리오에서 이것이 왜 작동하는지 이해 합니다. 당으로 살만대답은 (그리고 아마도 다른 사람), 그것은을 사용하려면 안전한 옵션들 .prop('checked')대신. 게다가, 그것은 선언 할 수도 있습니다 undefinedvar undefined = 'checked';.
WynandB

.prop('checked')더 나은 대답 인 것 같습니다. 기록 당시에는 신뢰할 수 없었습니다. 나는 이해하지 못하거나 정의되지 않은 것을 다시 선언하는 것이 좋은 생각이라고 생각하지 않습니다.
fe_lix_

부수적으로, undefined를 확인하는 것이 더 좋습니다.typeof (x) !== "undefined"
naor

이 경우! ==로 더 정확하고 읽기 쉽습니다. 과거에 정의되었거나 정의되지 않은 변수를 테스트 할 때만 typeof (x)를 사용합니다.
fe_lix_

30
$(document).ready(function() {    
    $('#agecheckbox').click(function() {
        if($(this).is(":checked"))
        {
            $('#agetextbox').show();
        } else {
            $('#agetextbox').hide();
        }
    });
});

30

당신이 사용할 수있는:

  if(document.getElementById('isAgeSelected').checked)
    $("#txtAge").show();  
  else
    $("#txtAge").hide();

if($("#isAgeSelected").is(':checked'))
  $("#txtAge").show();  
else
  $("#txtAge").hide();

둘 다 작동해야합니다.


27

1) HTML 마크 업이 다음과 같은 경우 :

<input type="checkbox"  />

사용 된 속성 :

$(element).attr("checked"); // Will give you undefined as initial value of checkbox is not set

소품을 사용하는 경우 :

$(element).prop("checked"); // Will give you false whether or not initial value is set

2) HTML 마크 업이 다음과 같은 경우 :

 <input type="checkbox"  checked="checked" />// May be like this also  checked="true"

사용 된 속성 :

$(element).attr("checked") // Will return checked whether it is checked="true"

소품 사용 :

$(element).prop("checked") // Will return true whether checked="checked"

이것은 실제 문제입니다. 해결 방법-입력에 change 이벤트를 추가하십시오. <input type = "checkbox"onchange = "ChangeChkBox ()"/> 그런 다음 해당 이벤트를 사용하여 부울 JavaScript 변수를 변경하고 확인란을 직접 쿼리하는 대신 JavaScript 변수를 사용하십시오.
Graham Laight

24

이 예제는 버튼입니다.

다음을 시도하십시오 :

<input type="button" class="check" id="checkall" value="Check All" />  &nbsp; <input type="button" id="remove" value="Delete" /> <br/>

<input type="checkbox" class="cb-element"  value="1" /> Checkbox  1 <br/>
<input type="checkbox" class="cb-element"  value="2" /> Checkbox  2 <br/>
<input type="checkbox" class="cb-element"  value="3" /> Checkbox  3 <br/>


$('#remove').attr('disabled', 'disabled'); 

$(document).ready(function() {  

    $('.cb-element').click(function() {

        if($(this).prop('checked'))
        {
            $('#remove').attr('disabled', false);
        }
        else
        {
            $('#remove').attr('disabled', true);
        }
    });   

    $('.check:button').click(function()
{
    var checked = !$(this).data('checked');
    $('input:checkbox').prop('checked', checked);
    $(this).data('checked', checked);

    if(checked == true)
    {
        $(this).val('Uncheck All');
         $('#remove').attr('disabled', false);
    }

    else if(checked == false)
    {
        $(this).val('Check All');
        $('#remove').attr('disabled', true);
    }
});
});

24

최고 답변은 나를 위해 그것을하지 않았다. 그러나 이것은했다 :

<script type="text/javascript">
    $(document).ready(function(){

        $("#li_13").click(function(){
            if($("#agree").attr('checked')){
                $("#saveForm").fadeIn();
            }
            else
            {
                $("#saveForm").fadeOut();
            }
        });
    });
</script>

기본적으로 # li_13 요소를 클릭하면 .attr('checked')기능 을 사용하여 요소 # 동의 (확인란)가 선택되었는지 확인 합니다. #saveForm 요소에서 페이드 인 경우 saveForm 요소에서 페이드 아웃되지 않은 경우


22

나는 이것을 사용하고있다 :

 <input type="checkbox" id="isAgeSelected" value="1" /> <br/>
 <input type="textbox" id="txtAge" />

 $("#isAgeSelected").is(':checked') ? $("#txtAge").show() : $("#txtAge").hide();

22

당신이 당신의 문제에 대한 자바 스크립트 솔루션을 제안했지만 (A 표시 textboxA는 경우 checkbox이다 checked),이 문제는 해결 될 수있는 단지 CSS에 의해 . 이 방법을 사용하면 JavaScript를 비활성화 한 사용자에게 양식이 작동합니다.

다음 HTML이 있다고 가정합니다.

<label for="show_textbox">Show Textbox</label>
<input id="show_textbox" type="checkbox" />
<input type="text" />

다음 CSS를 사용하여 원하는 기능을 수행 할 수 있습니다.

 #show_textbox:not(:checked) + input[type=text] {display:none;}

다른 시나리오의 경우 적절한 CSS 선택기를 생각할 수 있습니다.

여기이 방법을 설명하는 바이올린이 있습니다.


21

토글 : 0/1 또는 기타

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

    $('#nolunch').change(function () {
    if ($(this).is(':checked')) {
        $('#checklunch').val('1');
    };
    if ($(this).is(':checked') == false) {
        $('#checklunch').val('0');
    };
});

19

나는 그것이 간단한 것 같아요

$('#isAgeSelected').change(function() {
    if($(this).is(":checked")) {
        $('#txtAge').show();
    }
else{
        $('#txtAge').hide();
    }                                          
});
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.