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
}

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


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
}

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.


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.


9
if ( $("#checkSurfaceEnvironment-1").is(":checked") && $("#checkSurfaceEnvironment-2").not(":checked") )

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.


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
}

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>


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


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

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>

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.


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.


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>

0

Saya menggunakan ini dan bekerja untuk saya!

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

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

0
if($("#checkbox1").prop('checked') == false){
    alert('checkbox is not checked');
    //do something
}
else
{ 
    alert('checkbox is checked');
}

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
    }

});
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.