Thiết lập các mục đã kiểm tra, chọn một hộp kiểm với jQuery


4130

Tôi muốn làm một cái gì đó như thế này để đánh dấu checkboxbằng cách sử dụng jQuery :

$(".myCheckBox").checked(true);

hoặc là

$(".myCheckBox").selected(true);

Có một điều như vậy tồn tại?


Một câu hỏi cụ thể hơn (và rất hữu ích!), "Làm cách nào để kiểm tra một mục trong hộp kiểm - được đặt theo GIÁ TRỊ?", Tôi nghĩ chúng ta cũng có thể thảo luận ở đây và tôi đã đăng câu trả lời bên dưới.
Peter Krauss

Kiểm tra các cách khác để làm điều này bằng cách sử dụng jQuery tại đây stackoverflow.com/a/22019103/1868660
Subodh Ghulaxe

Nếu bạn cần kích hoạt sự kiện onchange, thì đó là$("#mycheckbox").click();
HumanInDisguise 11/05/2015

"Kiểm tra một cái gì đó" gợi ý thử nghiệm nó, vì vậy tôi nghĩ rằng 'Tạo một hộp kiểm tra' là một tiêu đề rõ ràng hơn và tốt hơn.
Alireza

chống đỡ (); chức năng là câu trả lời hoàn hảo. Xem định nghĩa hàm - api.jquery.com/prop
Yogihosting

Câu trả lời:


5969

JQuery hiện đại

Sử dụng .prop():

$('.myCheckbox').prop('checked', true);
$('.myCheckbox').prop('checked', false);

API DOM

Nếu bạn đang làm việc chỉ với một yếu tố, bạn luôn có thể truy cập vào bên dưới HTMLInputElementvà sửa đổi thuộc tính của nó .checked:

$('.myCheckbox')[0].checked = true;
$('.myCheckbox')[0].checked = false;

Lợi ích của việc sử dụng .prop().attr()phương thức thay vì điều này là chúng sẽ hoạt động trên tất cả các yếu tố phù hợp.

jQuery 1.5.x trở xuống

Các .prop()phương pháp không có sẵn, vì vậy bạn cần phải sử dụng .attr().

$('.myCheckbox').attr('checked', true);
$('.myCheckbox').attr('checked', false);

Lưu ý rằng đây là cách tiếp cận được sử dụng bởi các thử nghiệm đơn vị của jQuery trước phiên bản 1.6 và thích hợp hơn là sử dụng$('.myCheckbox').removeAttr('checked'); vì sau này, nếu hộp được kiểm tra ban đầu, hãy thay đổi hành vi của một cuộc gọi sang .reset()bất kỳ dạng nào có chứa nó - một cách tinh tế nhưng có lẽ thay đổi hành vi không mong muốn.

Để biết thêm ngữ cảnh, một số thảo luận không đầy đủ về các thay đổi đối với việc xử lý checkedthuộc tính / thuộc tính trong quá trình chuyển đổi từ 1.5.x sang 1.6 có thể được tìm thấy trong ghi chú phát hành phiên bản 1.6 và phần Thuộc tính so với Thuộc tính của .prop()tài liệu .


26
@Xian xóa thuộc tính đã kiểm tra khiến không thể đặt lại biểu mẫu
mcgrailm

6
Một lưu ý phụ, jQuery 1.6.1 nên khắc phục sự cố mà tôi đã đề cập, vì vậy tất cả chúng ta vẫn có thể quay lại sử dụng $ (...).
Prop

19
"Nếu bạn đang làm việc chỉ với một yếu tố, nó sẽ luôn được sử dụng nhanh nhất DOMElement.checked = true". Nhưng nó sẽ không đáng kể, bởi vì đó chỉ là một yếu tố ...
Tyler Crompton

46
Như Tyler nói, đó là một cải tiến không đáng kể trong hiệu suất. Đối với tôi, mã hóa bằng cách sử dụng API phổ biến giúp dễ đọc hơn so với trộn API gốc và API jQuery. Tôi sẽ gắn bó với jQuery.
Charlie Kilian

18
@TylerCrompton - Tất nhiên, nó không hoàn toàn về hiệu suất, nhưng làm $(element).prop('checked')là hoàn toàn lãng phí khi gõ. element.checkedtồn tại và nên được sử dụng trong các trường hợp bạn đã cóelement
gnarf

704

Sử dụng:

$(".myCheckbox").attr('checked', true); // Deprecated
$(".myCheckbox").prop('checked', true);

Và nếu bạn muốn kiểm tra xem hộp kiểm có được kiểm tra hay không:

$('.myCheckbox').is(':checked');

4
cũng $ (bộ chọn) .kiểm tra để kiểm tra đã được kiểm tra
eomeroff

6
Tôi đã thử mã chính xác này và nó không hoạt động với tôi trong trường hợp chọn tất cả / chọn không có hộp kiểm nào cần kiểm tra và bỏ chọn tất cả cũng như kiểm tra trạng thái của chúng. Thay vào đó, tôi đã thử câu trả lời của @Christopher Harris và điều đó đã tạo nên mánh khóe.
JD Smith

Tại sao sử dụng "biểu mẫu #mycheckbox" thay vì chỉ "#mycheckbox"? Id đã là duy nhất trong toàn bộ tài liệu, nó nhanh hơn và đơn giản hơn để chọn nó trực tiếp.
YuriAlbu Stew

@YuriAlbu Stew đó là một ví dụ. bạn có thể sử dụng bất cứ thứ gì bạn muốn
bchhun

5
$ (bộ chọn) .checked không hoạt động. Không có phương thức 'được kiểm tra' trong jQuery.
Brendan Byrd

318

Đây là cách chính xác để kiểm tra và bỏ chọn các hộp kiểm với jQuery, vì đây là tiêu chuẩn đa nền tảng và sẽ cho phép đăng lại mẫu.

$('.myCheckBox').each(function(){ this.checked = true; });

$('.myCheckBox').each(function(){ this.checked = false; });

Bằng cách này, bạn đang sử dụng các tiêu chuẩn JavaScript để kiểm tra và bỏ chọn các hộp kiểm, do đó, bất kỳ trình duyệt nào thực hiện đúng thuộc tính "đã kiểm tra" của phần tử hộp kiểm sẽ chạy mã này một cách hoàn hảo. Điều này nên là tất cả các trình duyệt chính, nhưng tôi không thể kiểm tra trước Internet Explorer 9.

Vấn đề (jQuery 1.6):

Khi người dùng nhấp vào hộp kiểm, hộp kiểm đó sẽ ngừng phản ứng với các thay đổi thuộc tính "đã chọn".

Dưới đây là một ví dụ về thuộc tính hộp kiểm không thực hiện công việc sau khi ai đó đã nhấp vào hộp kiểm (điều này xảy ra trong Chrome).

Vĩ cầm

Giải pháp:

Bằng cách sử dụng thuộc tính "đã kiểm tra" của JavaScript trên các thành phần DOM , chúng tôi có thể giải quyết vấn đề trực tiếp, thay vì cố gắng thao túng DOM để thực hiện những gì chúng tôi muốn .

Vĩ cầm

Plugin này sẽ thay đổi thuộc tính được kiểm tra của bất kỳ thành phần nào được jQuery chọn và kiểm tra và bỏ chọn thành công các hộp kiểm trong mọi trường hợp. Vì vậy, trong khi điều này có vẻ như là một giải pháp quá sức, nó sẽ giúp trải nghiệm người dùng trang web của bạn tốt hơn và giúp ngăn chặn sự thất vọng của người dùng.

(function( $ ) {
    $.fn.checked = function(value) {
        if(value === true || value === false) {
            // Set the value of the checkbox
            $(this).each(function(){ this.checked = value; });
        } 
        else if(value === undefined || value === 'toggle') {
            // Toggle the checkbox
            $(this).each(function(){ this.checked = !this.checked; });
        }

        return this;
    };
})( jQuery );

Ngoài ra, nếu bạn không muốn sử dụng plugin, bạn có thể sử dụng các đoạn mã sau:

// Check
$(':checkbox').prop('checked', true);

// Un-check
$(':checkbox').prop('checked', false);

// Toggle
$(':checkbox').prop('checked', function (i, value) {
    return !value;
});

5
Trong ví dụ về JSFiddle đầu tiên của bạn, bạn nên sử dụng removeAttr('checked')chứ không phảiattr('checked', false)
Daniel X Moore

4
@DanielXMore, Bạn đang giải quyết vấn đề này. Ví dụ là để cho thấy rằng một khi người dùng nhấp vào hộp kiểm, trình duyệt không còn phản ứng với checkedcác thay đổi thuộc tính, bất kể phương thức được sử dụng để thay đổi chúng.
cwharris

3
@ChristopherHarris Ok, bạn nói đúng, tôi đã bỏ lỡ điều đó. Kể từ jQuery 1.6, bạn không nên sử dụng phương thức .prop chứ? $('.myCheckBox').prop('checked', true)Bằng cách đó, nó sẽ tự động áp dụng cho toàn bộ tập hợp các yếu tố phù hợp (chỉ khi cài đặt, nhận vẫn chỉ là lần đầu tiên)
Daniel X Moore

Đúng. propchắc chắn là cách thích hợp để đặt thuộc tính trên một phần tử.
cwharris

@ChristopherHarris, tôi đã thêm những gì tôi cần vào plugin để cho phép một số tham số linh hoạt. Điều này làm cho xử lý nội tuyến dễ dàng hơn mà không cần chuyển đổi loại. Esp từ các cơ sở dữ liệu khác nhau với 'ý tưởng' về "sự thật" là gì. Fiddle: jsfiddle.net/Cyberjetx/vcp96
Joe Johnston

147

Bạn có thể làm

$('.myCheckbox').attr('checked',true) //Standards compliant

hoặc là

$("form #mycheckbox").attr('checked', true)

Nếu bạn có mã tùy chỉnh trong sự kiện onclick cho hộp kiểm mà bạn muốn kích hoạt, thay vào đó hãy sử dụng mã này:

$("#mycheckbox").click();

Bạn có thể bỏ chọn bằng cách xóa hoàn toàn thuộc tính:

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

Bạn có thể kiểm tra tất cả các hộp kiểm như thế này:

$(".myCheckbox").each(function(){
    $("#mycheckbox").click()
});

bạn cũng có thể đi $ ("# myTable input: hộp kiểm"). mỗi (...);
Chris Brandma

Bạn cũng có thể đi $(".myCheckbox").click()
RobertPitt

3
@Michah xóa thuộc tính đã kiểm tra khiến không thể đặt lại biểu mẫu
mcgrailm

12
Câu trả lời này đã lỗi thời vì nó sử dụng .attrthay vì .prop.
Blazemonger

$("#mycheckbox").click();làm việc cho tôi khi tôi đang lắng nghe sự kiện thay đổi và .attr& .propkhông thực hiện thay đổi sự kiện.
Damodar Bashyal

80

Bạn cũng có thể mở rộng đối tượng $ .fn bằng các phương thức mới:

(function($)  {
   $.fn.extend({
      check : function()  {
         return this.filter(":radio, :checkbox").attr("checked", true);
      },
      uncheck : function()  {
         return this.filter(":radio, :checkbox").removeAttr("checked");
      }
   });
}(jQuery));

Sau đó, bạn có thể làm:

$(":checkbox").check();
$(":checkbox").uncheck();

Hoặc bạn có thể muốn cung cấp cho họ các tên độc đáo hơn như mycheck () và myuncheck () trong trường hợp bạn sử dụng một số thư viện khác sử dụng các tên đó.


5
@ livfree75 xóa thuộc tính đã kiểm tra khiến không thể đặt lại biểu mẫu
mcgrailm

5
Câu trả lời này đã lỗi thời vì nó sử dụng .attrthay vì .prop.
Blazemonger

64
$("#mycheckbox")[0].checked = true;
$("#mycheckbox").attr('checked', true);
$("#mycheckbox").click();

Cái cuối cùng sẽ kích hoạt sự kiện click cho hộp kiểm, những cái khác thì không. Vì vậy, nếu bạn có mã tùy chỉnh trong sự kiện onclick cho hộp kiểm mà bạn muốn kích hoạt, hãy sử dụng mã cuối cùng.


4
top one sẽ thất bại ... đã kiểm tra không phải là thành viên của đối tượng jquery
redsapes

5
Câu trả lời này đã lỗi thời vì nó sử dụng .attrthay vì .prop.
Blazemonger

IMO clicksự kiện này không đáng tin cậy trong Firefox và Edge.
Vahid Amiri

62

Để kiểm tra một hộp kiểm bạn nên sử dụng

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

hoặc là

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

và để bỏ chọn hộp kiểm, bạn phải luôn đặt nó thành false:

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

Nếu bạn làm

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

nó loại bỏ tất cả các thuộc tính cùng nhau và do đó bạn sẽ không thể đặt lại biểu mẫu.

BAD DEMO jQuery 1.6 . Tôi nghĩ rằng điều này là bị hỏng. Cho 1.6 tôi sẽ thực hiện một bài viết mới về điều đó.

CÔNG VIỆC MỚI DEMO jQuery 1.5.2 hoạt động trong Chrome.

Cả hai bản demo đều sử dụng

$('#tc').click(function() {
    if ( $('#myCheckbox').attr('checked')) {
        $('#myCheckbox').attr('checked', false);
    } else {
        $('#myCheckbox').attr('checked', 'checked');
    }
});

1
Điều này là không chính xác. đặt thuộc tính 'được kiểm tra' thành '' sẽ không bỏ chọn các hộp kiểm trong ít nhất là chrome.
cwharris

@xixonia Tôi đã kiểm tra trước khi tôi đăng fiddle của bạn không hoạt động vì bạn đã không thay đổi menu bên trái để bao gồm jquery
mcgrailm

1
mcgralim - trong 1.6 thậm chí còn dễ dàng hơn .... $(".mycheckbox").prop("checked", true/false)
gnarf

2
@MarkAmery bạn đã đề cập rằng bài viết của tôi không thêm gì vào thời điểm đăng bài nhưng điều đó là chính xác. Nếu bạn nhìn vào lịch sử của câu trả lời được chấp nhận, bạn sẽ thấy họ đề nghị loại bỏ yếu tố này. Điều này làm cho nó không thể thiết lập lại biểu mẫu, đó là lý do tại sao tôi đăng lên để bắt đầu.
mcgrailm

1
@mcgrailm Tôi đã đi trước và sửa đổi câu trả lời được chấp nhận theo nhận xét của bạn. Nếu bạn muốn để mắt đến nó và kiểm tra xem nó có tốt ở trạng thái hiện tại không, tôi đánh giá cao điều đó. Tôi xin lỗi một lần nữa vì đã đưa ra những lời chỉ trích gay gắt, ít nhất là một phần, rất sai lầm.
Đánh dấu Amery

51

Điều này chọn các phần tử có thuộc tính được chỉ định với giá trị chứa chuỗi con đã cho "ckbItem":

$('input[name *= ckbItem]').prop('checked', true);

Nó sẽ chọn tất cả các thành phần có chứa ckbItem trong thuộc tính tên của nó.


46

Giả sử rằng câu hỏi là ...

Làm cách nào để kiểm tra hộp kiểm được đặt theo GIÁ TRỊ?

Hãy nhớ rằng trong một bộ hộp kiểm thông thường, tất cả các thẻ đầu vào có cùng tên, chúng khác nhau bởi thuộc tínhvalue : không có ID cho mỗi đầu vào của bộ.

Câu trả lời của Xian có thể được mở rộng với bộ chọn cụ thể hơn , sử dụng dòng mã sau:

$("input.myclass[name='myname'][value='the_value']").prop("checked", true);

45

Tôi đang thiếu giải pháp. Tôi sẽ luôn sử dụng:

if ($('#myCheckBox:checked').val() !== undefined)
{
    //Checked
}
else
{
    //Not checked
}

3
Điều này không trả lời câu hỏi (câu hỏi là về việc đặt hộp kiểm có được chọn hay không, không xác định xem hộp kiểm có được chọn hay không). Đây cũng là một cách khá xấu để xác định xem hộp kiểm có được chọn hay không (vì một điều, bạn đang khai thác sự thật không hiển nhiên .val()sẽ luôn quay trở lại undefinedkhi được gọi trên 0 phần tử để phát hiện đối tượng jQuery trống, khi bạn có thể chỉ cần kiểm tra .lengththay thế) - xem stackoverflow.com/questions/901712/ Khăn để biết các cách tiếp cận dễ đọc hơn.
Đánh dấu Amery

42

Để kiểm tra hộp kiểm bằng jQuery 1.6 trở lên, chỉ cần làm điều này:

checkbox.prop('checked', true);

Để bỏ chọn, sử dụng:

checkbox.prop('checked', false);

Đây là những gì tôi muốn sử dụng để chuyển đổi hộp kiểm bằng jQuery:

checkbox.prop('checked', !checkbox.prop('checked'));

Nếu bạn đang sử dụng jQuery 1.5 trở xuống:

checkbox.attr('checked', true);

Để bỏ chọn, sử dụng:

checkbox.attr('checked', false);

37

Đây là một cách để làm điều đó mà không cần jQuery

function addOrAttachListener(el, type, listener, useCapture) {
  if (el.addEventListener) {
    el.addEventListener(type, listener, useCapture);
  } else if (el.attachEvent) {
    el.attachEvent("on" + type, listener);
  }
};

addOrAttachListener(window, "load", function() {
  var cbElem = document.getElementById("cb");
  var rcbElem = document.getElementById("rcb");
  addOrAttachListener(cbElem, "click", function() {
    rcbElem.checked = cbElem.checked;
  }, false);
}, false);
<label>Click Me!
  <input id="cb" type="checkbox" />
</label>
<label>Reflection:
  <input id="rcb" type="checkbox" />
</label>


31

Đây là mã để kiểm tra và bỏ chọn bằng một nút:

var set=1;
var unset=0;
jQuery( function() {
    $( '.checkAll' ).live('click', function() {
        $( '.cb-element' ).each(function () {
            if(set==1){ $( '.cb-element' ).attr('checked', true) unset=0; }
            if(set==0){ $( '.cb-element' ).attr('checked', false); unset=1; }
        });
        set=unset;
    });
});

Cập nhật: Đây là cùng một khối mã sử dụng phương thức prop Jquery 1.6+ mới hơn, thay thế attr:

var set=1;
var unset=0;
jQuery( function() {
    $( '.checkAll' ).live('click', function() {
        $( '.cb-element' ).each(function () {
            if(set==1){ $( '.cb-element' ).prop('checked', true) unset=0; }
            if(set==0){ $( '.cb-element' ).prop('checked', false); unset=1; }
        });
        set=unset;
    });
});

4
Câu trả lời này đã lỗi thời vì nó sử dụng .attrthay vì .prop.
Blazemonger

30

Thử cái này:

$('#checkboxid').get(0).checked = true;  //For checking

$('#checkboxid').get(0).checked = false; //For unchecking

29

Chúng ta có thể sử dụng elementObjectvới jQuery để kiểm tra thuộc tính:

$(objectElement).attr('checked');

Chúng tôi có thể sử dụng điều này cho tất cả các phiên bản jQuery mà không có bất kỳ lỗi nào.

Cập nhật: Jquery 1.6+ có phương thức chống đỡ mới thay thế attr, ví dụ:

$(objectElement).prop('checked');

2
Câu trả lời này đã lỗi thời vì nó sử dụng .attrthay vì .prop.
Blazemonger

25

Nếu bạn đang sử dụng PhoneGap để phát triển ứng dụng và bạn có một giá trị trên nút mà bạn muốn hiển thị ngay lập tức, hãy nhớ làm điều này

$('span.ui-[controlname]',$('[id]')).text("the value");

Tôi thấy rằng không có nhịp, giao diện sẽ không cập nhật cho dù bạn làm gì.


25

Dưới đây là mã và bản demo để biết cách kiểm tra nhiều hộp kiểm ...

http://jsfiddle.net/tamilmani/z8TTt/

$("#check").on("click", function () {

    var chk = document.getElementById('check').checked;
    var arr = document.getElementsByTagName("input");

    if (chk) {
        for (var i in arr) {
            if (arr[i].name == 'check') arr[i].checked = true;
        }
    } else {
        for (var i in arr) {
            if (arr[i].name == 'check') arr[i].checked = false;
        }
    }
});

- 1; trộn các bộ chọn jQuery như $("#check")với các lệnh gọi API DOM thô document.getElementsByTagName("input")có vẻ như không phù hợp với tôi, đặc biệt là các forvòng lặp ở đây có thể tránh được bằng cách sử dụng .prop(). Bất kể đây là một câu trả lời muộn mà không có gì mới.
Đánh dấu Amery

20

Một giải pháp khả thi khác:

    var c = $("#checkboxid");
    if (c.is(":checked")) {
         $('#checkboxid').prop('checked', false);
    } else {
         $('#checkboxid').prop('checked', true);
    }

19

Như @ livefree75 đã nói:

jQuery 1.5.x trở xuống

Bạn cũng có thể mở rộng đối tượng $ .fn bằng các phương thức mới:

(function($)  {
   $.fn.extend({
      check : function()  {
         return this.filter(":radio, :checkbox").attr("checked", true);
      },
      uncheck : function()  {
         return this.filter(":radio, :checkbox").removeAttr("checked");
      }
   });
}(jQuery));

Nhưng trong các phiên bản mới của jQuery, chúng ta phải sử dụng một cái gì đó như thế này:

jQuery 1.6+

    (function($)  {
       $.fn.extend({
          check : function()  {
             return this.filter(":radio, :checkbox").prop("checked", true);
          },
          uncheck : function()  {
             return this.filter(":radio, :checkbox").prop("checked",false);
          }
       });
    }(jQuery));

Sau đó, bạn có thể làm:

    $(":checkbox").check();
    $(":checkbox").uncheck();

18

Nếu sử dụng điện thoại di động và bạn muốn giao diện cập nhật và hiển thị hộp kiểm là không được chọn, hãy sử dụng như sau:

$("#checkbox1").prop('checked', false).checkboxradio("refresh");

18

Lưu ý về rò rỉ bộ nhớ trong Internet Explorer trước Internet Explorer 9 , vì tài liệu jQuery nêu :

Trong Internet Explorer trước phiên bản 9, sử dụng .prop () để đặt thuộc tính phần tử DOM thành bất kỳ giá trị nào khác ngoài giá trị nguyên thủy đơn giản (số, chuỗi hoặc boolean) có thể gây rò rỉ bộ nhớ nếu thuộc tính không bị xóa (sử dụng .removeProp ( )) trước khi phần tử DOM được xóa khỏi tài liệu. Để đặt giá trị an toàn trên các đối tượng DOM mà không bị rò rỉ bộ nhớ, hãy sử dụng .data ().


2
Điều này là không liên quan, vì tất cả các câu trả lời (chính xác) sử dụng .prop('checked',true).
Blazemonger

Không chắc chắn tôi đã hiểu nhận xét của bạn. Điều này vẫn tồn tại trong tài liệu jQuery. Bạn đang ám chỉ rằng không có rò rỉ bộ nhớ trong IE <9?
naor

2
Không có rò rỉ bộ nhớ trong trường hợp này, vì chúng ta đang đặt nó thành một giá trị nguyên thủy đơn giản (Boolean).
Blazemonger

18

Dành cho jQuery 1.6+

$('.myCheckbox').prop('checked', true);
$('.myCheckbox').prop('checked', false);

Dành cho jQuery 1.5.x trở xuống

$('.myCheckbox').attr('checked', true);
$('.myCheckbox').attr('checked', false);

Để kiểm tra,

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

17

Để kiểm tra và bỏ chọn

$('.myCheckbox').prop('checked', true);
$('.myCheckbox').prop('checked', false);

3
- 1; điều này không thêm giá trị nào cho một chủ đề đã nở rộ. Mã ở đây chính xác giống như câu trả lời được chấp nhận.
Đánh dấu Amery

16
$('controlCheckBox').click(function(){
    var temp = $(this).prop('checked');
    $('controlledCheckBoxes').prop('checked', temp);
});

4
- 1 vì là câu trả lời chỉ có mã, không trả lời trực tiếp câu hỏi và không thêm gì mà các câu trả lời khác chưa được đề cập.
Đánh dấu Amery

15

Đây có lẽ là giải pháp ngắn nhất và dễ nhất:

$(".myCheckBox")[0].checked = true;

hoặc là

$(".myCheckBox")[0].checked = false;

Thậm chí ngắn hơn sẽ là:

$(".myCheckBox")[0].checked = !0;
$(".myCheckBox")[0].checked = !1;

Đây là một jsFiddle là tốt.


14

Plain JavaScript rất đơn giản và ít chi phí hơn nhiều:

var elements = document.getElementsByClassName('myCheckBox');
for(var i = 0; i < elements.length; i++)
{
    elements[i].checked = true;
}

Ví dụ ở đây


@MarkAmery Câu trả lời được chấp nhận không bao gồm cách thực hiện mà không cần jQuery. Câu trả lời của tôi thêm lợi ích bổ sung cho câu trả lời được chấp nhận.
Alex W

13

Tôi không thể làm cho nó hoạt động bằng cách sử dụng:

$("#cb").prop('checked', 'true');
$("#cb").prop('checked', 'false');

Cả đúng và sai sẽ kiểm tra hộp kiểm. Những gì làm việc cho tôi là:

$("#cb").prop('checked', 'true'); // For checking
$("#cb").prop('checked', '');     // For unchecking

16
không nên nó được truefalsevà không 'true''false'?
sức mạnh

9
Nó "không hoạt động" bởi vì 'false'đã được chuyển đổi thành giá trị boolean dẫn đến true- chuỗi rỗng ước lượng để falsenó "hoạt động". Xem fiddle này cho ví dụ về những gì tôi có ý nghĩa.
Shadow Wizard là Ear For You

@ chris97ong Tôi đã quay lại chỉnh sửa của bạn; khi ai đó nói "Đừng sử dụng mã dưới đây vì nó không hoạt động", sửa mã đó trong khi để lại nhận xét nói rằng nó không hoạt động là có hại - đặc biệt là khi nó phá vỡ lời giải thích trong các nhận xét về lý do tại sao mã không đang làm việc Điều đó nói rằng, câu trả lời này vẫn còn hơi bối rối và đáng bị hạ bệ vì những lý do được đưa ra bởi tpower và ShadowWizard.
Đánh dấu Amery

1
sử dụng giá trị đúng và sai cho boolean, không sử dụng 'true' hoặc 'false' (chuỗi).
Jone Polvora

13

Khi bạn kiểm tra một hộp kiểm như;

$('.className').attr('checked', 'checked')

nó có thể không đủ Bạn cũng nên gọi hàm dưới đây;

$('.className').prop('checked', 'true')

Đặc biệt là khi bạn loại bỏ thuộc tính hộp kiểm tra.


11

Đây là câu trả lời hoàn chỉnh bằng jQuery

Tôi kiểm tra nó và nó hoạt động 100%: D

    // when the button (select_unit_button) is clicked it returns all the checed checkboxes values 
    $("#select_unit_button").on("click", function(e){

             var arr = [];

             $(':checkbox:checked').each(function(i){
                 arr[i] = $(this).val(); // u can get id or anything else
             });

              //console.log(arr); // u can test it using this in google chrome
    });

10

Trong jQuery,

if($("#checkboxId").is(':checked')){
    alert("Checked");
}

hoặc là

if($("#checkboxId").attr('checked')==true){
    alert("Checked");
}

Trong JavaScript,

if (document.getElementById("checkboxID").checked){
    alert("Checked");
}

7
Điều này không trả lời câu hỏi.
Samuel Liew

2
Câu trả lời này đã lỗi thời vì nó sử dụng .attrthay vì .prop.
Blazemonger
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.