jquery 세트 확인란이 선택되었습니다.


479

이미 가능한 모든 방법을 시도했지만 여전히 작동하지 않습니다. 모달 창이 있는데 checkbox모달이 열릴 때 checkbox체크 또는 체크 해제가 데이터베이스 값을 기반으로해야합니다. (나는 이미 다른 양식 필드와 함께 작업하고 있습니다.) 확인을 시도했지만 작동하지 않았습니다.

내 HTML 사업부 :

<div id="fModal" class="modal" >
    ...
    <div class="row-form">
        <div class="span12">
            <span class="top title">Estado</span>

          <input type="checkbox"  id="estado_cat" class="ibtn">
       </div>
    </div>             
</div>

그리고 jquery :

$("#estado_cat").prop( "checked", true );

나도 시도했지만 attr포럼에서 다른 사람들이 보았지만 아무것도 작동하지 않는 것 같습니다. 누군가가 올바른 방향으로 나를 가리킬 수 있습니까?

편집 : 좋아, 여기에 실제로 뭔가가 빠져 있습니다 ... 확인란이 페이지에 있으면 코드를 사용하여 확인 / 선택 취소 할 수 있지만 모달 창에 있습니다. 수십 가지 방법으로 시도했습니다 ...

모달을 여는 링크가 있습니다.

jquery는 클릭을 "듣고"데이터베이스에서 오는 데이터로 일부 텍스트 상자를 채우는 것과 같은 일부 작업을 실행합니다. 모든 것이 원하는 것처럼 작동하지만 문제는 코드를 사용하여 확인란을 선택 / 선택 취소 할 수 없다는 것입니다. 도와주세요!

$(function() {
 $(".editButton").click(function(){
       var id = $(this).data('id'); 
       $.ajax({
          type: "POST",
          url: "process.php",
          dataType:"json",
          data: { id: id, op: "edit" },
        }).done(function( data ) {
//the next two lines work fine, i.e., it grabs the value from database and fills the textboxes
          $("#nome_categoria").val( data['nome_categoria'] );
          $("#descricao_categoria").val( data['descricao_categoria'] );
//then I tried to set the checkbox checked (because its unchecked by default) and it does not work
           $("#estado_cat").prop("checked", true);
        $('#fModal').modal('show');
});
    evt.preventDefault();
    return false;
    });     
});

모달이 열릴 때 모달 div에 어떤 ​​클래스가 적용됩니까? 또한 AJAX를 사용하여 데이터베이스 값을 어떻게 확인합니까? 또는 이미 프리 페치되어 변수에 저장되어 있습니까?
user1428716

모달 창을로드 한 후 확인란 설정 모달 창을로드하기 전에 확인란을 설정한다고 생각합니다. $ ( '# fModal'). modal ( 'show'); $ ( "# estado_cat"). attr ( "checked", "checked");
Vineeth Bhaskaran

답변:


805

'prop'기능을 사용해야합니다.

.prop('checked', true);

jQuery 1.6 이전 ( user2063626의 답변 참조 ) :

.attr('checked','checked')

5
정답이있는 것 같습니다. 좀 더 자세히 설명해 주시겠습니까? stackoverflow.com/a/5876747/29182
Ziggy

1
알아두면 좋습니다. jQuery 3.3.x의 마이그레이션 문서를 통해이 문제를 간과
reaper_unique

1
내가 처음 생각한 것처럼 최신 버전의 jQuery에서 attr을 사용할 수 없다는 것을 아는 것이 좋습니다
Kaloyan

75

검색 된 true (상자를 선택해야 함) 또는 false (상자를 선택하지 않아야 함)를 기준으로 확인란을 선택 또는 선택 취소하려고 시도-제안 된 모든 답변을 가져 와서 내 상황에 적용하십시오. 사용하는 것을 발견 .prop을 (사실, "확인").prop ( "확인"거짓 ) 올바른 해결책이었다.

댓글이나 답변을 추가 할 수는 없지만 대화에 추가하기에는 이것이 중요하다고 생각했습니다.

검색된 값 "allDay"가 true이면 ID가 "even_allday_yn"인 확인란을 선택하는 전체 캘린더 수정에 대한 자세한 코드는 다음과 같습니다.

if (allDay)
{
    $( "#even_allday_yn").prop('checked', true);
}
else
{
    $( "#even_allday_yn").prop('checked', false);
}

48
왜 한 줄에 있지 않습니까? $( "#even_allday_yn").prop('checked', allDay);
Xavier Hayoz

3
그는 가능한 가치를 보여 주려고 노력했다. 여기에 이와 같은 예가없는 "allDay"의 실제 가치를 어떻게 알 수 있습니까?
Soroush Falahati 님이

1
@Xavier Hayoz. allDay가 순수 이진 값이 아닌 문자 값으로 'true'또는 'false'를 반환하는 경우에만 작동합니다. 확인란은 HTML로 잘못 디자인되어 있으며 확인 된 상태는 매우 다른 방식으로 표현 될 수 있습니다. 내가 아는 안전하고 유일한 방법은 다음과 같습니다. allDay === 'true'? $ ( '# even_allday_yn) .prop ( "확인 됨", true) : $ ('# even_allday_yn) .prop ( "확인 됨", false). 엄격한 동등 연산자를 주목하십시오.
Brice Coustillas

1
$('#even_allday_yn').prop('checked', allDay === true)allDay === true부울 결과를 제공 하기 때문에 작동 합니다.
leftclickben

58

친구 아래 코드를보십시오 :

$("div.row-form input[type='checkbox']").attr('checked','checked')

또는

$("div.row-form #estado_cat").attr("checked","checked");

또는

$("div.row-form #estado_cat").attr("checked",true);

26
KeyOfJ의 답변에서와 같이 .prop('checked', true)대신 사용하십시오 attr-방금 동일한 문제가 발생하여 prop작동합니다.
semmelbroesel 2016 년

3
참고 :checked의사 선택기 또는 기타 기본 확인란 HTML 기능을 사용하려면을 사용해야합니다 .prop.
benastan

1
이것을 시도했지만 작동하지 않았지만 코드를 $ ( "div.row-form #estado_cat"). prop ( "checked", "checked"); 그것은 효과가 있었다. (attr을 prop로 변경)
Jim Evans

1
불행히도 prop은 jQuery 1.6 이상이므로, 작동하지 않는 레거시 프레임 워크에 갇힌 경우
wolffer-east

.attr().prop()jQuery 1.6 이상 에서 이전 버전으로 이동하는 방법 입니다.
vapcguy

26

"checked"속성은 확인란이 존재하자마자 '틱'합니다. 따라서 확인란을 선택 / 선택 취소하려면 속성을 설정 / 설정 해제해야합니다.

확인란을 확인하려면 :

$('#myCheckbox').attr('checked', 'checked');

확인란의 선택을 해제하려면 :

$('#myCheckbox').removeAttr('checked');

확인 된 상태를 테스트하려면 다음을 수행하십시오.

if ($('#myCheckbox').is(':checked'))

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


19

동적 또는 페이지에 관계없이 모달 창에 있기 때문에 다음 코드를 사용하여 목표를 달성 할 수 있습니다.

HTML :

<div class="content-container" style="text-align: right;">
    <input type="checkbox" id="QueryGroupCopyQueries">
    <label for="QueryGroupCopyQueries">Create Copies</label>                                                   
</div>

암호:

$.each(queriesToAddToGroup, function (index, query) {
    if (query.groupAddType === queriesGroupAddType.COPY) {

        // USE FIND against your dynamic window and PROP to set the value
        // if you are using JQUERY 1.6 or higher.
        $(kendoWindow).find("input#QueryGroupCopyQueries").prop("checked", true);

        return;
    }

위의 "kendoWindow"는 내 창입니다 (광산은 동적이지만 페이지에서 직접 요소에 추가 할 때도이 작업을 수행합니다). 데이터 배열 ( "queriesToAddToGroup")을 반복하여 COPY 속성을 가진 행이 있는지 확인합니다. 그렇다면 사용자 가이 창에서 저장할 때 해당 속성을 설정하는 창 내 확인란을 설정하고 싶습니다.


4
당면한 질문에 대한 다른 답변은 "작동"할 수 있지만, prop이 답변이 제안 하는 대로 동적 jQuery 체크 박스 확인 / 확인 해제를 수행하는 올바른 방법이 사용 됩니다.
Joshua Burns

11
.attr("checked",true)
.attr("checked",false)

따옴표 안에 true와 false가 없는지 확인하십시오.


1
attr은 체크 박스를 체크하지 않을 것이고 prop은 체크를 수행하는 것입니다. 마찬가지로 .prop('checked', true); 이 게시물에서 더 많은 정보를 원하시면
casivaagustin

@casivaagustin jQuery 버전에 따라 다릅니다. 나는 jQuery 1.6 이전에 .attr()설명 된대로 작동 했다고 생각 합니다.
vapcguy

5

주어진 코드처럼 아래와 같이 작성할 수 있습니다.

HTML

<input type="checkbox"  id="estado_cat" class="ibtn">

jQuery

$(document).ready(function(){
    $(".ibtn").click(function(){
        $(".ibtn").attr("checked", "checked");
    });
});

그것이 당신을 위해 일하기를 바랍니다.


4

GreaseMonkey 스크립트에서이 기능을 사용하여 페이지에서 확인란을 자동으로 확인하려는 경우 checked 속성 만 설정하면 연관된 동작이 트리거되지 않을 수 있습니다. 이 경우 확인란을 "클릭"하면 아마도 선택된 속성도 설정됩니다.

$("#id").click()

3
$("#divParentClip").find("#subclip_checkbox")[0].checked=true;

Find는 array를 반환하므로 [0]을 사용하여 하나의 항목 만있는 경우에도 가져옵니다.

찾기를 사용하지 않으면

$("#subclip_checkbox").checked=true;

이것은 나를 위해 Mozilla Firefox에서 잘 작동했습니다.


1
이것은 작동합니다. CSS에 : checked 스타일이 있으면 다른 모든 솔루션이 감지되지 않습니다.
bhappy


2

아마도 jQuery UI를 사용하고 있기 때문에 이것을 시도하십시오 (주석이 아닌 경우)

 $("#fModal" ).dialog({
     open: function( event, ui ) {

     if(//some hidden value check which stores the DB value==expected value for
      checking the Checkbox)

         $("div.row-form input[type='checkbox']").attr('checked','checked');

    }
   });

@ user2063626-함수 내부의 js 부분이 답변에서 복사됩니다.
user1428716

2

$("#estado_cat").checkboxradio("refresh")확인란에서 실행 해 보셨습니까 ?


2

작동합니다.

 $("div.row-form input[type='checkbox']").attr('checked','checked');

2

이 문제도 발생했습니다.

여기 내 오래된 코드가 작동하지 않습니다

if(data.access == 'private'){
     Jbookaccess.removeProp("checked") ; 
    //I also have tried : Jbookaccess.removeAttr("checked") ;
 }else{
    Jbookaccess.prop("checked", true)
}

다음은 현재 작동하는 새 코드입니다.

if(data.access == 'private'){
     Jbookaccess.prop("checked",false) ;
 }else{
    Jbookaccess.prop("checked", true)
}

따라서 중요한 점은 작동하기 전에 확인 된 속성이 존재하고 제거되지 않았는지 확인하십시오.


훨씬 간단합니다 :Jbookaccess.prop("checked", data.access != 'private');
Legionar

2

최신 버전의 jquery를 사용하면 attr('checked')return 'checked'prop('checked')반환 하기 때문에이 문제가 발생 합니다 true.


2
<body>
      <input id="IsActive" name="IsActive" type="checkbox" value="false">
</body>

<script>
    $('#IsActive').change(function () {
         var chk = $("#IsActive")
         var IsChecked = chk[0].checked
         if (IsChecked) {
          chk.attr('checked', 'checked')
         } 
         else {
          chk.removeAttr('checked')                            
         }
          chk.attr('value', IsChecked)
     });
</script>

이 크롬과 파이어 폭스에서 잘 작동합니다
akhlaghi 레자를

1

모달 창을로드 한 후 확인란을 설정하십시오. 페이지를로드하기 전에 확인란을 설정하고 있다고 생각합니다.

$('#fModal').modal('show');
$("#estado_cat").attr("checked","checked");

1

나는 이것이 Jquery 솔루션을 요구한다는 것을 알고 있지만, 나는 이것을 일반 자바 스크립트로 토글하는 것이 매우 쉽다는 것을 지적하지만.

var element = document.getElementById("estado_cat");
element.checked = 1;

현재 및 미래의 모든 버전에서 작동합니다.


0
<div class="custom-control custom-switch">
      <input type="checkbox" class="custom-control-input" name="quiz_answer" id="customSwitch0">
      <label class="custom-control-label" for="customSwitch0"><span class="fa fa-minus fa-lg mt-1"></span></label>
  </div>

id와 for 속성을 각각 증가시켜야합니다. 동적으로 추가 된 부트 스트랩 확인란의 경우.

$(document).on('change', '.custom-switch', function(){
    let parent = $(this);
    parent.find('.custom-control-label > span').remove();
    let current_toggle = parent.find('.custom-control-input').attr('id');
    if($('#'+current_toggle+'').prop("checked") == true){
        parent.find('.custom-control-label').append('<span class="fa fa-check fa-lg mt-1"></span>');
    }
    else if($('#'+current_toggle+'').prop("checked") == false){
        parent.find('.custom-control-label').append('<span class="fa fa-minus fa-lg mt-1"></span>');
    }
})
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.