jQuery: Uji apakah kotak centang TIDAK dicentang

110

Saya kesulitan mencari tahu. Saya memiliki dua kotak centang (di masa mendatang akan memiliki lebih banyak):

  • checkSurfaceEnvironment-1
  • checkSurfaceEnvironment-2

Pada dasarnya, saya ingin menulis pernyataan if dan menguji apakah salah satunya dicentang dan yang lain TIDAK dicentang. Apa cara termudah untuk mencapai hal berikut:

if ( $("#checkSurfaceEnvironment-1").attr('checked', true) &&
     $("#checkSurfaceEnvironment-2").is('**(NOT??)** :checked') ) {
        // do something
}
pengguna1040259
sumber
3
Gunakan ||tidak &&untuk memeriksa apakah salah satunya dicentang. &&periksa apakah keduanya dicentang.
j08691

Jawaban:

213

Salah satu cara andal yang saya gunakan adalah:

if($("#checkSurfaceEnvironment-1").prop('checked') == true){
    //do something
}

Jika Anda ingin mengulang elemen yang dicentang gunakan elemen induk

$("#parentId").find("checkbox").each(function(){
    if ($(this).prop('checked')==true){ 
        //do something
    }
});

Info lebih lanjut:

Ini bekerja dengan baik karena semua kotak centang memiliki properti yang diperiksa yang menyimpan status kotak centang yang sebenarnya. Jika ingin, Anda dapat memeriksa halaman dan mencoba untuk memeriksa dan menghapus centang pada kotak centang, dan Anda akan melihat atribut "diperiksa" (jika ada) akan tetap sama. Atribut ini hanya mewakili status awal kotak centang, dan bukan status saat ini . Status saat ini disimpan dalam properti yang diperiksa dari elemen dom untuk kotak centang itu.

Lihat Properti dan Atribut di HTML

Pablo Mescher
sumber
2
Umm ... ini baru saja diaturchecked = true
Naftali alias Neal
@Pablo - Periksa jawaban saya di bawah ini, yang saya juga merupakan opsi yang andal / tepat.
Aneesh Vijendran
@PabloMescher Hei, bisa tolong bantu saya? Saya sebenarnya ingin menentukan kotak centang mana yang dicentang di antara beberapa? Dan, aktifkan / nonaktifkan kotak teks di sebelahnya. Bantuan apa pun akan sangat dihargai.
1lastBr3ath
@ 1lastBr3ath yakin, jika Anda menggunakan jQuery Anda hanya perlu menemukan pemilih untuk kotak teks relatif terhadap kotak centang dan menggunakan contoh kedua saya. Ini akan terlihat seperti if ($ (this) .prop ('checked')) {$ (this) .find ("<textboxSelector>") .attr ("disabled", true); }
Pablo Mescher
1
@Stophface dalam hal ini properti ini akan selalu berupa boolean karena ini adalah properti yang dihitung dan bukan string, jadi Anda bisa menggunakan ==. Adalah bijaksana untuk selalu menggunakan === meskipun karena ini tidak selalu terjadi
Pablo Mescher
77
if (!$("#checkSurfaceEnvironment-1").is(":checked")) {
    // do something if the checkbox is NOT checked
}
shweta
sumber
31

Anda juga dapat menggunakan .not()metode jQuery atau :not()selector:

if ($('#checkSurfaceEnvironment').not(':checked').length) {
    // do stuff for not selected
}

Contoh JSFiddle


catatan tambahan

Dari dokumentasi jQuery API untuk :not() selector :

The .not () metode akan berakhir menyediakan Anda dengan pilihan dibaca lebih dari mendorong penyeleksi kompleks atau variabel menjadi : tidak () pemilih filter. Dalam banyak kasus, ini adalah pilihan yang lebih baik.

Aneesh Vijendran
sumber
1
! $ ("# checkSurfaceEnvironment"). is (": check") mengembalikan boolean. Memang benar jika kotak centang tidak dicentang. $ ('# checkSurfaceEnvironment'). not (': check') mengembalikan larik elemen DOM. Menguji ini dengan 'if' mengembalikan 'true' bahkan jika tidak ada kecocokan dengan selektor dan array kosong. Satu-satunya cara jawaban Anda bisa benar adalah jika Anda menguji i $ ('# checkSurfaceEnvironment'). Bukan (': check'). Length, yang akan mengembalikan 0 atau 1.
Thibault Witzig
22

Cara alternatif:

Berikut adalah contoh kerja dan ini kodenya, Anda juga harus menggunakan prop.

$('input[type="checkbox"]').mouseenter(function() { 
    if ($(this).is(':checked')) {
        //$(this).prop('checked',false);
        alert("is checked");
    } else {
         //$(this).prop('checked',true);
        alert("not checked");
    }
});​

Saya mengomentari cara mengaktifkan atribut yang dicentang.

Trufa
sumber
9
if ( $("#checkSurfaceEnvironment-1").is(":checked") && $("#checkSurfaceEnvironment-2").not(":checked") )
Zoltan Toth
sumber
6

Saya mencari implementasi yang lebih langsung seperti yang disarankan avijendr.

Saya mengalami sedikit masalah dengan sintaksnya, tetapi saya membuat ini berfungsi:

if ($('.user-forms input[id*="chkPrint"]:not(:checked)').length > 0)

Dalam kasus saya, saya memiliki meja dengan kelas user-forms, dan aku sedang memeriksa jika ada kotak centang yang memiliki string checkPrintdi mereka idyang dicentang.

MsGirlPerl
sumber
5

Saya pikir cara termudah (dengan jQuery) untuk memeriksa apakah kotak centang dicentang atau TIDAK adalah:

jika 'dicentang':

if ($(this).is(':checked')) {
// I'm checked let's do something
}

jika TIDAK 'dicentang':

if (!$(this).is(':checked')) {
// I'm NOT checked let's do something
}
Michael Stachura
sumber
4

Di sini saya memiliki potongan untuk pertanyaan ini.

$(function(){
   $("#buttoncheck").click(function(){
        if($('[type="checkbox"]').is(":checked")){
            $('.checkboxStatus').html("Congratulations! "+$('[type="checkbox"]:checked').length+" checkbox checked");
        }else{
            $('.checkboxStatus').html("Sorry! Checkbox is not checked");
         }
         return false;
   })
    
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>
  <p>
    <label>
      <input type="checkbox" name="CheckboxGroup1" value="checkbox" id="CheckboxGroup1_0">
      Checkbox</label>
    <br>
    <label>
      <input type="checkbox" name="CheckboxGroup1_" value="checkbox" id="CheckboxGroup1_1">
      Checkbox</label>
    <br>
  </p>
  <p>
    <input type="reset" value="Reset">
    <input type="submit" id="buttoncheck" value="Check">
  </p>
  <p class="checkboxStatus"></p>
</form>

Ashok
sumber
3

Untuk melakukannya dengan .attr()seperti yang Anda miliki, untuk melihat apakah itu dicentang .attr("checked", "checked"), dan jika tidak, itu akan terjadi.attr("checked") == undefined

ayyp
sumber
1

Kembalikan nilai true jika semua checbox dicentang dalam div

function all_checked (id_div){
 all_checked = true;

 $(id_div+' input[type="checkbox"]').each(function() { 
    all_checked = all_checked && $('this').prop('checked');
 }

 return all_checked;
}
Martin Da Rosa
sumber
1

Sederhana dan mudah untuk memeriksa atau kondisi tidak dicentang

<input type="checkbox" id="ev-click" name="" value="" >

<script>
    $( "#ev-click" ).click(function() {
        if(this.checked){
            alert('checked');
        }
        if(!this.checked){
            alert('Unchecked');
        }
    });
</script>
Ravi Bhoraniya
sumber
1

coba yang ini

if ($("#checkSurfaceEnvironment-1:checked").length>0) {
    //your code in case of NOT checked
}

Dalam kode di atas memilih elemen dengan Id (#checkSurfaceEnvironment-1)kemudian menyaring status yang diperiksa oleh (:checked)filter.

Ini akan mengembalikan array objek elemen yang dicentang. Jika ada objek yang ada dalam array maka kondisi if akan terpenuhi.

Sonker Satish Kumar
sumber
Meskipun jawaban Anda mungkin membantu, Anda setidaknya harus menjelaskan alasannya. Karena itu, jawaban Anda telah masuk ke antrian moderasi Posting Kualitas Rendah (di mana saya melihatnya). Saya sarankan Anda mengedit jawaban Anda untuk menambahkan penjelasan.
Chris Spittles
1

Ada dua cara untuk memeriksa kondisi.

if ($("#checkSurfaceEnvironment-1").is(":checked")) {
    // Put your code here if checkbox is checked
}

ATAU Anda juga bisa menggunakan yang ini

if($("#checkSurfaceEnvironment-1").prop('checked') == true){
    // Put your code here if checkbox is checked
}

Semoga bermanfaat untuk anda.

Gaurang Sondagar
sumber
1

Berikut adalah cara termudah yang diberikan

 <script type="text/javascript">

        $(document).ready(function () {
            $("#chk_selall").change("click", function () {

                if (this.checked)
                {
                    //do something
                }
                if (!this.checked)
                {
                    //do something

                }

            });

        });

    </script>
Debendra Dash
sumber
0

Saya menggunakan ini dan bekerja untuk saya!

$("checkbox selector").click(function() {
    if($(this).prop('checked')==true){
       do what you need!
    }
});
Seyed Mohammad Hosseini
sumber
0

Saya tahu ini sudah dijawab, tetapi tetap saja, ini cara yang baik untuk melakukannya:

if ($("#checkbox").is(":checked")==false) {
    //Do stuff here like: $(".span").html("<span>Lorem</span>");
}
Halo Dunia
sumber
0
if($("#checkbox1").prop('checked') == false){
    alert('checkbox is not checked');
    //do something
}
else
{ 
    alert('checkbox is checked');
}
Rutvik kakadiya
sumber
4
Meskipun ini mungkin menjawab pertanyaan penulis, ini tidak memiliki beberapa kata dan / atau tautan yang menjelaskan ke dokumentasi. Potongan kode mentah tidak terlalu membantu tanpa beberapa frase di sekitarnya. Anda juga mungkin menemukan cara menulis jawaban yang bagus sangat membantu. Harap edit jawaban Anda - Dari Ulasan
Nick
-4
$("#chkFruits_0,#chkFruits_1,#chkFruits_2,#chkFruits_3,#chkFruits_4").change(function () {
        var item = $("#chkFruits_0,#chkFruits_1,#chkFruits_2,#chkFruits_3,#chkFruits_4");
    if (item.is(":checked")==true) {
        //execute your code here
    }

    else if (item.is(":not(:checked)"))
    {
        //execute your code here
    }

});
Cool_Yusuf
sumber