jQuery Uniform 라이브러리를 사용하여 확인란을 선택 취소하는 방법


144

의 선택을 해제하는 데 문제가 checkbox있습니다. 내가 시도하고있는 jsFiddle을 살펴보십시오 .

   $("#check2").attr("checked", true);

내가 사용하는 유니폼을 스타일링을 위해 checkbox그것은 단순히 작동하지 않습니다 / 선택 해제 확인checkbox .

어떤 아이디어?


구글 크롬과 파이어 폭스 둘 다에서 그것은 작동하지 않습니다
Upvote

답변:


108

문서를 살펴보면 $.uniform.update"균일 한"요소를 새로 고치는 기능이 있습니다.

예 : http://jsfiddle.net/r87NH/4/

$("input:checkbox").uniform();

$("body").on("click", "#check1", function () {
    var two = $("#check2").attr("checked", this.checked);
    $.uniform.update(two);
});

5
@ mkoryak :에서 잘 작동 1.4.4하지만 js 및 css 파일에 대한 링크가 손상되었습니다. 여기에 업데이트 된 바이올린이 있습니다. 에 특별히 문제가 있음을 의미하는 경우 1.6jQuery가 변경 된 다음의 동작을 되 돌린 이후에 해당 .attr()됩니다. 이상을 사용하면 1.6실제로를 사용해야합니다 .prop().
user113716

업데이트 된 버전이 저에게 적합하고 원본이 그렇지 않다는 것을 제외하고 업데이트 된 jsFiddle과 원본 (확인란 2의 레이블이 잘못 붙은 부분까지) 사이에 전혀 차이가 없음을 알 수 있습니다.?!?
iPadDeveloper2011

BTW이 픽셀로 그린 유니폼 형식 은 Retina에서 매우 섹시 하지 않습니다 .
화신

나를 위해 작동하지 않았다 jsfiddle도 작동하지 않거나 혼란스러워
matthy

367

더 간단한 해결책은 유니폼을 사용하는 대신 이것을 수행하는 것입니다.

$('#check1').prop('checked', true); // will check the checkbox with id check1
$('#check1').prop('checked', false); // will uncheck the checkbox with id check1

이렇게하면 정의 된 클릭 동작이 트리거되지 않습니다.

다음을 사용할 수도 있습니다.

$('#check1').click(); // 

확인란의 체크 / 체크를 토글하지만 정의한 클릭 동작도 트리거합니다. 그러니 조심해.

편집 : jQuery 1.6 이상은 확인란의 값을 선택 prop()하지 않습니다.attr()


2
이것은 jQuery 1.7.1에서 checked 속성을 그대로 둡니다. 효과는 있지만 생각한대로하지 않습니다.
2rs2ts

24
$("#chkBox").attr('checked', false); 

이것은 나를 위해 일했으며 확인란의 선택을 취소합니다. 같은 방식으로

$("#chkBox").attr('checked', true); 

확인란을 선택하십시오.


4
.attr () 대신 .prop () 함수를 사용하는 것이 좋습니다. 그렇지 않으면 ... 항상 예상대로 작동하지 않습니다
사이먼 스타 인 버거에게

13

균일 한 1.5 를 사용하는 경우이 간단한 트릭을 사용 하여 확인 속성을 추가 또는 제거
하십시오. 확인란의 입력 필드에 value = "check"를 추가하십시오.
이 코드를 추가 uniform.js> function doCheckbox(elem){>.click(function(){

if ( $(elem+':checked').val() == 'check' ) {
    $(elem).attr('checked','checked');           
}
else {
    $(elem).removeAttr('checked');
}   

입력 상자에 value = "check"를 추가하지 않으려면 경우에 따라 두 개의 확인란을 추가하기 때문에 이것을 사용하십시오.

if ($(elem).is(':checked')) {
 $(elem).attr('checked','checked');
}    
else
{    
 $(elem).removeAttr('checked');
}

당신이 사용하는 경우 균일 2.0을 다음 추가 또는 검사의 속성을 제거하는 간단한 트릭을 사용하는
이의 classUpdateChecked($tag, $el, options) {기능 변화

if ($el.prop) {
    // jQuery 1.6+
    $el.prop(c, isChecked);
}

if ($el.prop) {
    // jQuery 1.6+
    $el.prop(c, isChecked);
    if (isChecked) {
        $el.attr(c, c);
    } else {
        $el.removeAttr(c);
    }

}

7
$('#check1').prop('checked', true).uniform(); 
$('#check1').prop('checked', false).uniform(); 

이것은 나를 위해 일했습니다.


대단히 감사합니다. 이것이 가장 간단한 해결 책임을 확인할 수 있습니다.
루돌프 Opperman

2

그냥 이렇게 :

$('#checkbox').prop('checked',true).uniform('refresh');

1

$.uniform.update()설명서에 언급 된대로 자바 스크립트를 사용하여 요소를 업데이트하는 경우 호출해야합니다 .


1

우선 checked, 값 checked또는 빈 문자열을 가질 수 있습니다 .

$("input:checkbox").uniform();

$('#check1').live('click', function() {
    $('#check2').attr('checked', 'checked').uniform();
});

부울 값을의 값으로 전달해도 아무런 문제가 없습니다 checked.
user113716

그러나 우리는 HTML 마크 업을 작성하지 않습니다. 에 속성을 설정하고 있습니다 HTMLInputElement. checked속성을 살펴보십시오 .
user113716

신경 쓰지 마라 ... 나는 그것이 왜 그것이 유효하지 않은지 이해하지 못한다.
nyuszika7h

부울 값 전달은 1.6 이상에서만 지원되며, 그 전에 checked 속성을 'checked'로 설정하거나 제거해야합니다.
mkoryak

1

어떤 경우에는 이것을 사용할 수 있습니다.

$('.myInput').get(0).checked = true

토글의 경우 다른 기능이있는 경우 사용할 수 있습니다


1

 $("#checkall").change(function () {
            var checked = $(this).is(':checked');
            if (checked) {
                $(".custom-checkbox").each(function () {
                    $(this).prop("checked", true).uniform();
                });
            } else {
                $(".custom-checkbox").each(function () {
                    $(this).prop("checked", false).uniform();
                });
            }
        });

        // Changing state of CheckAll custom-checkbox
        $(".custom-checkbox").click(function () {
            if ($(".custom-checkbox").length == $(".custom-checkbox:checked").length) {
                $("#chk-all").prop("checked", true).uniform();
            } else {
                $("#chk-all").removeAttr("checked").uniform();
            }
        });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" id='checkall' /> Select All<br/>
 <input type="checkbox" class='custom-checkbox' name="languages" value="PHP"> PHP<br/>
 <input type="checkbox" class='custom-checkbox' name="languages" value="AngularJS"> AngularJS<br/>
 <input type="checkbox" class='custom-checkbox' name="languages" value="Python"> Python<br/>
 <input type="checkbox" class='custom-checkbox' name="languages" value="Java"> Java<br/>


0

다른 방법은

사용하다 $('#check2').click();

그러면 유니폼이 확인란을 선택하고 마스크를 업데이트합니다.


-1

라디오 btn처럼 작동하는 확인란

$(".checkgroup").live('change',function() { var previous=this.checked; $(".checkgroup).attr("checked", false); $(this).attr("checked", previous); });

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.