Cách bỏ chọn hộp kiểm bằng thư viện jQuery thống nhất


144

Tôi có một vấn đề với việc bỏ chọn a checkbox. Hãy xem jsFiddle của tôi , nơi tôi đang cố gắng:

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

Tôi sử dụng thống nhất cho styling checkboxvà nó chỉ đơn giản không hoạt động để kiểm tra / bỏ chọn các checkbox.

Có ý kiến ​​gì không?


cả trong google chrome và firefox nó không hoạt động với tôi
Upvote

Câu trả lời:


108

Nhìn vào tài liệu của họ, họ có một $.uniform.updatetính năng để làm mới một yếu tố "mặc đồng phục".

Ví dụ: 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: Hoạt động tốt 1.4.4, nhưng các liên kết đến tệp js và css đã bị hỏng. Đây là một fiddle cập nhật. Nếu bạn muốn nói rằng nó sẽ có vấn đề cụ thể 1.6, thì điều đó có thể đúng vì jQuery đã thay đổi sau đó hoàn nguyên hành vi của .attr(). Sử dụng1.6 hoặc cao hơn, bạn thực sự nên được sử dụng .prop().
dùng113716

Tôi có thể thấy hoàn toàn không có sự khác biệt nào giữa jsFiddle được cập nhật và bản gốc (ngay đến việc đánh dấu sai của hộp kiểm 2), ngoại trừ phiên bản cập nhật hoạt động với tôi và bản gốc không!?!?
iPadDeveloper2011

BTW tất cả các hình thức Đồng phục được vẽ bằng pixel này trông rất lạ mắt trên Retina.
hóa thân

không làm việc cho tôi cũng jsfiddle không hoạt động hoặc gây nhầm lẫn
matthy

367

Một giải pháp đơn giản hơn là làm điều này thay vì sử dụng đồng phục:

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

Điều này sẽ không kích hoạt bất kỳ hành động nhấp chuột được xác định.

Bạn cũng có thể dùng:

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

Điều này sẽ chuyển đổi kiểm tra / bỏ chọn cho hộp kiểm nhưng điều này cũng sẽ kích hoạt bất kỳ hành động nhấp nào bạn đã xác định. Vì vậy, hãy cẩn thận.

EDIT : jQuery 1.6+ prop()không sử dụng attr()cho các hộp kiểm tra giá trị được kiểm tra


2
Điều này để lại thuộc tính được kiểm tra như trong jQuery 1.7.1 cho tôi. Hoạt động nhưng không làm những gì bạn nghĩ nó nên.
2rs2ts

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

Điều này làm việc cho tôi, điều này sẽ bỏ chọn hộp kiểm. Theo cùng một cách chúng ta có thể sử dụng

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

để kiểm tra hộp kiểm.


4
Tôi nghĩ rằng tốt hơn là sử dụng hàm .prop () thay vì .attr (). Nếu không thì nó sẽ không hoạt động như mong đợi ...
Simon Steinberger

13

Nếu bạn đang sử dụng đồng phục 1.5 thì hãy sử dụng thủ thuật đơn giản này để thêm hoặc xóa thuộc tính kiểm tra
Chỉ cần thêm giá trị = "kiểm tra" trong trường nhập của hộp kiểm của bạn.
Thêm mã này trong uniform.js> function doCheckbox(elem){>.click(function(){

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

nếu bạn không muốn thêm value = "check" vào hộp nhập của mình vì trong một số trường hợp bạn thêm hai hộp kiểm, vì vậy hãy sử dụng cái này

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

Nếu bạn đang sử dụng thống nhất 2.0 thì hãy sử dụng thủ thuật đơn giản này để thêm hoặc xóa thuộc tính kiểm tra
trong classUpdateChecked($tag, $el, options) {thay đổi chức năng này

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

Đến

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(); 

Điều này làm việc cho tôi.


Cảm ơn rât nhiều. Tôi có thể xác nhận rằng đây là giải pháp đơn giản nhất.
Rudolph Opperman

2

Chỉ cần làm điều này:

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

1

bạn cần gọi $.uniform.update()nếu bạn cập nhật phần tử bằng javascript như được đề cập trong tài liệu.


1

Trước hết, checkedcó thể có một giá trị checkedhoặc một chuỗi rỗng.

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

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

Không có gì sai khi chuyển một giá trị boolean là giá trị của checked.
dùng113716

Nhưng chúng tôi không viết đánh dấu HTML. Chúng tôi đang thiết lập một tài sản trên HTMLInputElement. Có một cái nhìn vào checkedtài sản.
dùng113716

Đừng bận tâm, tôi không thực sự hiểu tại sao nó không hợp lệ, hoặc là
nyuszika7h

chuyển một giá trị boolean chỉ được hỗ trợ trong 1.6+, trước đó bạn phải đặt thuộc tính được kiểm tra thành 'đã kiểm tra' hoặc xóa nó.
mkoryak

1

Trong một số trường hợp, bạn có thể sử dụng điều này:

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

Để chuyển đổi, bạn có thể sử dụng nếu khác có chức năng


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

Cách khác để làm là,

sử dụng $('#check2').click();

Điều này khiến đồng phục kiểm tra hộp kiểm và cập nhật mặt nạ


-1

hộp kiểm hoạt động như đài phát thanh btn

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.