Pengaturan "dicentang" untuk kotak centang dengan jQuery

4132

Saya ingin melakukan sesuatu seperti ini untuk mencentang checkboxmenggunakan jQuery :

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

atau

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

Apakah hal semacam itu ada?

kekuatan
sumber
Pertanyaan yang lebih spesifik (dan sangat berguna!), "Bagaimana saya memeriksa item dalam set kotak centang DENGAN NILAI?", Saya pikir kita juga bisa membahas di sini, dan saya mengirim jawaban di bawah.
Peter Krauss
Lihat cara lain untuk melakukan ini menggunakan jQuery di sini stackoverflow.com/a/22019103/1868660
Subodh Ghulaxe
Jika Anda memerlukan acara $("#mycheckbox").click();
pertukaran
"Memeriksa sesuatu" menyarankan untuk mengujinya, jadi saya pikir 'Membuat centang kotak' adalah judul yang lebih jelas dan lebih baik.
Alireza
menopang(); fungsi adalah jawaban sempurna. Lihat definisi fungsi - api.jquery.com/prop
yogihosting

Jawaban:

5969

JQuery modern

Gunakan .prop():

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

API DOM

Jika Anda bekerja hanya dengan satu elemen, Anda selalu dapat mengakses dasarnya HTMLInputElementdan memodifikasi .checkedpropertinya:

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

Manfaat menggunakan .prop()dan .attr()metode daripada ini adalah bahwa mereka akan beroperasi pada semua elemen yang cocok.

jQuery 1.5.x dan di bawah

The .prop()Metode ini tidak tersedia, sehingga Anda perlu menggunakan .attr().

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

Perhatikan bahwa ini adalah pendekatan yang digunakan oleh unit test jQuery sebelum versi 1.6 dan lebih disukai untuk digunakan $('.myCheckbox').removeAttr('checked');karena yang terakhir akan, jika kotak awalnya dicentang, mengubah perilaku panggilan ke .reset()pada bentuk apa pun yang berisi itu - halus tapi mungkin perubahan perilaku yang tidak disukai.

Untuk lebih banyak konteks, beberapa diskusi tidak lengkap tentang perubahan penanganan checkedatribut / properti dalam transisi dari 1.5.x ke 1.6 dapat ditemukan di catatan rilis versi 1.6 dan bagian Atribut vs Properti dari .prop()dokumentasi .

Xian
sumber
26
@Xian menghapus atribut yang dicentang membuatnya tidak mungkin untuk mengatur ulang formulir
mcgrailm
6
Sebagai catatan tambahan, jQuery 1.6.1 harus memperbaiki masalah yang saya sebutkan, sehingga kita semua bisa kembali menggunakan $ (...). Prop (...)
cwharris
19
"Jika Anda bekerja dengan hanya satu elemen, itu akan selalu tercepat untuk digunakan DOMElement.checked = true". Tapi itu bisa diabaikan, karena itu hanya satu elemen ...
Tyler Crompton
46
Seperti yang dikatakan Tyler, ini merupakan peningkatan kinerja yang dapat diabaikan. Bagi saya, pengkodean menggunakan API umum membuatnya lebih mudah dibaca daripada mencampur API asli dan API jQuery. Saya akan tetap dengan jQuery.
Charlie Kilian
18
@TylerCrompton - Tentu saja, ini tidak sepenuhnya tentang kinerja, tetapi melakukan $(element).prop('checked')adalah pemborosan mengetik. element.checkedada dan harus digunakan dalam kasus-kasus di mana Anda sudah memilikielement
gnarf
705

Menggunakan:

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

Dan jika Anda ingin memeriksa apakah kotak centang dicentang atau tidak:

$('.myCheckbox').is(':checked');
bchhun
sumber
4
juga $ (pemilih) .checked to check dicentang
eomeroff
6
Saya mencoba kode persis ini dan itu tidak berfungsi untuk saya dalam kasus pilih semua / pilih tidak ada kotak centang yang perlu memeriksa dan menghapus centang semua serta memeriksa keadaan mereka. Sebagai gantinya, saya mencoba jawaban @Christopher Harris dan itu berhasil.
JD Smith
Mengapa menggunakan "form #mycheckbox" daripada hanya "#mycheckbox"? ID sudah unik di seluruh dokumen, lebih cepat dan lebih mudah untuk mengambilnya secara langsung.
YuriAlbuquerque
@ YuriAlbuquerque itu adalah contoh. Anda dapat menggunakan pemilih apa pun yang Anda inginkan.
bchhun
5
$ (selector) .checked tidak berfungsi. Tidak ada metode 'dicentang' di jQuery.
Brendan Byrd
318

Ini adalah cara yang benar untuk memeriksa dan menghapus centang pada kotak centang dengan jQuery, karena ini adalah standar lintas-platform, dan akan memungkinkan repost formulir.

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

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

Dengan melakukan ini, Anda menggunakan standar JavaScript untuk memeriksa dan menghapus centang pada kotak centang, sehingga peramban yang mengimplementasikan properti "kotak centang" elemen kotak centang dengan benar akan menjalankan kode ini dengan sempurna. Ini harus semua browser utama, tetapi saya tidak dapat menguji sebelum Internet Explorer 9.

Masalahnya (jQuery 1.6):

Setelah pengguna mengklik kotak centang, kotak centang itu berhenti merespons perubahan atribut yang "dicentang".

Berikut adalah contoh atribut kotak centang gagal melakukan pekerjaan setelah seseorang mengklik kotak centang (ini terjadi di Chrome).

Biola

Solusinya:

Dengan menggunakan properti "dicentang" JavaScript pada elemen DOM , kami dapat menyelesaikan masalah secara langsung, alih-alih mencoba memanipulasi DOM agar melakukan apa yang kami inginkan .

Biola

Plugin ini akan mengubah properti yang dicentang dari setiap elemen yang dipilih oleh jQuery, dan berhasil memeriksa dan menghapus centang pada kotak dalam semua keadaan. Jadi, sementara ini mungkin tampak seperti solusi over-bearing, itu akan membuat pengalaman pengguna situs Anda lebih baik, dan membantu mencegah frustrasi pengguna.

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

Atau, jika Anda tidak ingin menggunakan plugin, Anda dapat menggunakan potongan kode berikut:

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

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

// Toggle
$(':checkbox').prop('checked', function (i, value) {
    return !value;
});
cwharris
sumber
5
Dalam contoh JSFiddle pertama Anda, Anda harus menggunakan removeAttr('checked')daripadaattr('checked', false)
Daniel X Moore
4
@DanielXMoore, Anda mengabaikan masalah ini. Contohnya adalah untuk menunjukkan bahwa setelah kotak centang diklik oleh pengguna, browser tidak lagi merespons checkedperubahan atribut, terlepas dari metode yang digunakan untuk mengubahnya.
cwharris
3
@ChristopherHarris Ok, Anda benar, saya melewatkan itu. Pada jQuery 1.6 sebaiknya Anda tidak menggunakan metode .prop? $('.myCheckBox').prop('checked', true)Dengan begitu, itu akan secara otomatis berlaku untuk seluruh rangkaian elemen yang cocok (hanya saat pengaturan sekalipun, mendapatkan masih yang pertama)
Daniel X Moore
Iya. propjelas merupakan cara yang tepat untuk mengatur atribut pada suatu elemen.
cwharris
@ChristopherHarris, saya telah menambahkan apa yang saya butuhkan ke plugin untuk memungkinkan fleksibilitas parameter. Ini menjadikan pemrosesan inline lebih mudah tanpa konversi tipe. Terutama dari database yang berbeda dengan 'ide' tentang apa yang "benar". Fiddle: jsfiddle.net/Cyberjetx/vcp96
Joe Johnston
147

Anda dapat melakukan

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

atau

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

Jika Anda memiliki kode khusus di acara onclick untuk kotak centang yang ingin Anda jalankan, gunakan yang ini sebagai gantinya:

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

Anda dapat menghapus centang dengan menghapus atribut seluruhnya:

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

Anda dapat mencentang semua kotak centang seperti ini:

$(".myCheckbox").each(function(){
    $("#mycheckbox").click()
});
Mikha
sumber
Anda juga dapat menggunakan $ ("# myTable input: checkbox"). masing-masing (...);
Chris Brandsma
Anda juga dapat pergi$(".myCheckbox").click()
RobertPitt
3
@Michah menghapus atribut yang dicentang membuatnya tidak mungkin untuk mengatur ulang formulir
mcgrailm
12
Jawaban ini kedaluwarsa karena ia menggunakan .attralih-alih .prop.
Blazemonger
$("#mycheckbox").click();bekerja untuk saya karena saya juga mendengarkan acara perubahan dan .attr& .proptidak memecat acara perubahan.
Damodar Bashyal
80

Anda juga dapat memperluas objek $ .fn dengan metode baru:

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

Maka Anda bisa melakukan:

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

Atau Anda mungkin ingin memberi mereka lebih banyak nama unik seperti mycheck () dan myuncheck () jika Anda menggunakan perpustakaan lain yang menggunakan nama-nama itu.

livefree75
sumber
5
@ livfree75 menghapus atribut yang dicentang membuatnya tidak mungkin untuk mengatur ulang formulir
mcgrailm
5
Jawaban ini kedaluwarsa karena ia menggunakan .attralih-alih .prop.
Blazemonger
64
$("#mycheckbox")[0].checked = true;
$("#mycheckbox").attr('checked', true);
$("#mycheckbox").click();

Yang terakhir akan mem-klik event klik untuk kotak centang, yang lain tidak. Jadi, jika Anda memiliki kode khusus di acara onclick untuk kotak centang yang ingin Anda jalankan, gunakan yang terakhir.

Chris Brandsma
sumber
4
top satu akan gagal ... diperiksa bukan anggota objek jquery
redsquare
5
Jawaban ini kedaluwarsa karena ia menggunakan .attralih-alih .prop.
Blazemonger
IMO clickacara tidak dapat diandalkan di Firefox dan Edge.
Vahid Amiri
62

Untuk mencentang kotak centang yang harus Anda gunakan

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

atau

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

dan untuk menghapus centang pada kotak centang Anda harus selalu mengaturnya ke false:

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

Jika kamu melakukan

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

itu menghapus semua atribut bersama-sama dan karena itu Anda tidak akan dapat mengatur ulang formulir.

BAD DEMO jQuery 1.6 . Saya pikir ini rusak. Untuk 1.6, saya akan membuat posting baru tentang itu.

DEMO KERJA BARU jQuery 1.5.2 bekerja di Chrome.

Keduanya menggunakan demo

$('#tc').click(function() {
    if ( $('#myCheckbox').attr('checked')) {
        $('#myCheckbox').attr('checked', false);
    } else {
        $('#myCheckbox').attr('checked', 'checked');
    }
});
mcgrailm
sumber
1
Ini tidak akurat. mengatur atribut 'dicentang' ke '' tidak akan menghapus centang pada kotak centang di setidaknya chrome.
cwharris
@ xixonia Saya melakukan tes sebelum saya memposting biola Anda tidak bekerja karena Anda tidak mengubah menu di sebelah kiri untuk memasukkan jquery
mcgrailm
1
mcgralim - dalam 1,6 bahkan lebih mudah .... $(".mycheckbox").prop("checked", true/false)
gnarf
2
@MarkAmery Anda menyebutkan bahwa kiriman saya tidak menambahkan apa pun pada saat kiriman, tetapi itu akurat. Jika Anda melihat riwayat jawaban yang diterima, Anda akan menemukan mereka menyarankan untuk menghapus elemen. Yang membuatnya mustahil untuk mengatur ulang formulir, itulah sebabnya saya memposting untuk memulai.
mcgrailm
1
@ mikcrailm Saya telah pergi ke depan dan mengubah jawaban yang diterima berdasarkan komentar Anda. Jika Anda ingin melihatnya dan memeriksa apakah itu terlihat bagus dalam kondisi saat ini, saya menghargai itu. Sekali lagi saya minta maaf karena memberikan kritik tajam yang, setidaknya sebagian, sangat keliru.
Mark Amery
51

Ini memilih elemen yang memiliki atribut yang ditentukan dengan nilai yang mengandung substring "ckbItem" yang diberikan:

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

Ini akan memilih semua elemen yang mengandung ckbItem dalam atribut namanya.

Abou-Emish
sumber
46

Dengan asumsi bahwa pertanyaannya adalah ...

Bagaimana cara saya memeriksa set-kotak centang BY VALUE?

Ingat bahwa dalam set kotak centang tipikal, semua tag input memiliki nama yang sama, mereka berbeda berdasarkan atributvalue : tidak ada ID untuk setiap input set.

Jawaban Xian dapat diperpanjang dengan pemilih yang lebih spesifik , menggunakan baris kode berikut:

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

Saya melewatkan solusi. Saya akan selalu menggunakan:

if ($('#myCheckBox:checked').val() !== undefined)
{
    //Checked
}
else
{
    //Not checked
}
Overbeeke
sumber
3
Ini tidak menjawab pertanyaan (pertanyaannya adalah tentang mengatur apakah kotak centang dicentang, tidak menentukan apakah kotak centang dicentang). Ini juga merupakan cara yang sangat jelek untuk menentukan apakah kotak centang dicentang (untuk satu hal, Anda mengeksploitasi fakta tidak terbukti sendiri yang .val()akan selalu kembali undefinedketika dipanggil pada 0 elemen untuk mendeteksi bahwa objek jQuery kosong, ketika Anda bisa cukup periksa .lengthsaja) - lihat stackoverflow.com/questions/901712/… untuk pendekatan yang lebih mudah dibaca.
Mark Amery
42

Untuk memeriksa kotak centang menggunakan jQuery 1.6 atau lebih tinggi lakukan ini:

checkbox.prop('checked', true);

Untuk menghapus centang, gunakan:

checkbox.prop('checked', false);

Inilah yang ingin saya gunakan untuk mengaktifkan kotak centang menggunakan jQuery:

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

Jika Anda menggunakan jQuery 1.5 atau lebih rendah:

checkbox.attr('checked', true);

Untuk menghapus centang, gunakan:

checkbox.attr('checked', false);
Ramon de Jesus
sumber
37

Inilah cara untuk melakukannya tanpa 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>

Xitalogy
sumber
31

Berikut adalah kode untuk dicentang dan tidak dicentang dengan tombol:

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

Pembaruan: Ini adalah blok kode yang sama menggunakan metode prop Jquery 1.6+ yang lebih baru, yang menggantikan 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;
    });
});
starjahid
sumber
4
Jawaban ini kedaluwarsa karena ia menggunakan .attralih-alih .prop.
Blazemonger
30

Coba ini:

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

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

Kita bisa menggunakan elementObjectjQuery untuk memeriksa atribut:

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

Kita dapat menggunakan ini untuk semua versi jQuery tanpa kesalahan.

Pembaruan: Jquery 1.6+ memiliki metode penyangga baru yang menggantikan attr, misalnya:

$(objectElement).prop('checked');
Prasanth P
sumber
2
Jawaban ini kedaluwarsa karena ia menggunakan .attralih-alih .prop.
Blazemonger
25

Jika Anda menggunakan PhoneGap melakukan pengembangan aplikasi, dan Anda memiliki nilai pada tombol yang ingin Anda tampilkan secara instan, jangan lupa lakukan ini

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

Saya menemukan bahwa tanpa rentang, antarmuka tidak akan memperbarui apa pun yang Anda lakukan.

Clement Ho
sumber
25

Berikut adalah kode dan demo untuk cara memeriksa beberapa kotak centang ...

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;
        }
    }
});
tamilmani
sumber
- 1; mencampurkan pemilih jQuery seperti $("#check")dengan panggilan API DOM mentah document.getElementsByTagName("input")sepertinya tidak cocok bagi saya, terutama mengingat bahwa forloop di sini dapat dihindari dengan menggunakan .prop(). Bagaimanapun ini adalah jawaban terlambat lain yang tidak menambahkan sesuatu yang baru.
Mark Amery
20

Solusi lain yang mungkin:

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

Seperti yang dikatakan @ livefree75:

jQuery 1.5.x dan di bawah

Anda juga dapat memperluas objek $ .fn dengan metode baru:

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

Tetapi dalam versi baru jQuery, kita harus menggunakan sesuatu seperti ini:

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

Maka Anda bisa melakukan:

    $(":checkbox").check();
    $(":checkbox").uncheck();
Ardalan Shahgholi
sumber
18

Jika menggunakan seluler dan Anda ingin antarmuka memperbarui dan menampilkan kotak centang sebagai tidak dicentang, gunakan yang berikut:

$("#checkbox1").prop('checked', false).checkboxradio("refresh");
Matt Peacock
sumber
18

Waspadai kebocoran memori di Internet Explorer sebelum Internet Explorer 9 , karena dokumentasi jQuery menyatakan :

Di Internet Explorer sebelum versi 9, menggunakan .prop () untuk mengatur properti elemen DOM menjadi apa pun selain nilai primitif sederhana (angka, string, atau boolean) dapat menyebabkan kebocoran memori jika properti tidak dihapus (menggunakan .removeProp ( )) sebelum elemen DOM dihapus dari dokumen. Untuk menetapkan nilai pada objek DOM dengan aman tanpa kebocoran memori, gunakan .data ().

naor
sumber
2
Ini tidak relevan, karena semua jawaban (benar) digunakan .prop('checked',true).
Blazemonger
Tidak yakin saya mengerti komentar Anda. Ini masih ada di dokumentasi jQuery. Apakah Anda menyiratkan tidak ada kebocoran memori di IE <9?
naor
2
Tidak ada kebocoran memori dalam kasus ini, karena kita sedang pengaturan ke nilai primitif sederhana (Boolean).
Blazemonger
18

Untuk jQuery 1.6+

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

Untuk jQuery 1.5.x dan di bawah

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

Untuk memeriksa,

$('.myCheckbox').removeAttr('checked');
logan
sumber
17

Untuk memeriksa dan menghapus centang

$('.myCheckbox').prop('checked', true);
$('.myCheckbox').prop('checked', false);
jj2422
sumber
3
- 1; ini sama sekali tidak menambah nilai pada utas yang sudah membengkak. Kode di sini persis sama dengan jawaban yang diterima.
Mark Amery
16
$('controlCheckBox').click(function(){
    var temp = $(this).prop('checked');
    $('controlledCheckBoxes').prop('checked', temp);
});
mahmoh
sumber
4
- 1 karena hanya menjadi jawaban kode, tidak menjawab pertanyaan secara langsung, dan tidak menambahkan apa pun yang belum dicakup oleh jawaban lain.
Mark Amery
15

Ini mungkin solusi terpendek dan termudah:

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

atau

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

Bahkan lebih pendek adalah:

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

Berikut ini adalah sebuah jsFiddle juga.

Friedrich
sumber
14

JavaScript polos sangat sederhana dan lebih sedikit overhead:

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

Contoh di sini

Alex W
sumber
@MarkAmery Jawaban yang diterima tidak mencakup bagaimana melakukannya tanpa jQuery. Jawaban saya menambah manfaat tambahan untuk jawaban yang diterima.
Alex W
13

Saya tidak bisa membuatnya bekerja menggunakan:

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

Benar dan salah akan memeriksa kotak centang. Apa yang berhasil untuk saya adalah:

$("#cb").prop('checked', 'true'); // For checking
$("#cb").prop('checked', '');     // For unchecking
fredcrs
sumber
16
tidak harus itu truedan falsedan tidak 'true'dan 'false'?
tpower
9
Itu "tidak bekerja" karena 'false'dikonversi ke nilai boolean yang mengakibatkan true- string kosong dievaluasi falsesehingga "bekerja". Lihat biola ini misalnya apa yang saya maksud.
Shadow Wizard adalah Ear For You
@ chris97 selama saya memutar kembali hasil edit Anda; ketika seseorang berkata "Jangan gunakan kode di bawah ini karena tidak berfungsi", memperbaiki kode itu sambil meninggalkan komentar yang mengatakan bahwa itu tidak bekerja berbahaya - terutama ketika itu memecah penjelasan di komentar mengapa kode tidak sedang bekerja Yang mengatakan, jawaban ini masih agak bingung dan layak untuk downvote karena alasan yang diberikan oleh tpower dan ShadowWizard.
Mark Amery
1
gunakan nilai true dan false untuk boolean, jangan gunakan 'benar' atau 'salah' (string).
Jone Polvora
13

Ketika Anda mencentang kotak centang seperti;

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

itu mungkin tidak cukup. Anda juga harus memanggil fungsi di bawah ini;

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

Terutama ketika Anda menghapus atribut centang kotak centang.

Serhat Koroglu
sumber
11

Inilah jawaban lengkapnya menggunakan jQuery

Saya mengujinya dan berfungsi 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
    });

sumber
10

Di jQuery,

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

atau

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

Dalam JavaScript,

if (document.getElementById("checkboxID").checked){
    alert("Checked");
}
ijarlax
sumber
7
Ini tidak menjawab pertanyaan.
Samuel Liew
2
Jawaban ini kedaluwarsa karena ia menggunakan .attralih-alih .prop.
Blazemonger