jQuery: Testen Sie, ob das Kontrollkästchen NICHT aktiviert ist

110

Ich habe Probleme, das herauszufinden. Ich habe zwei Kontrollkästchen (in Zukunft werden mehr vorhanden sein):

  • checkSurfaceEnvironment-1
  • checkSurfaceEnvironment-2

Grundsätzlich möchte ich eine if-Anweisung schreiben und testen, ob eine davon aktiviert ist und eine andere NICHT aktiviert ist. Was ist der einfachste Weg, um Folgendes zu erreichen:

if ( $("#checkSurfaceEnvironment-1").attr('checked', true) &&
     $("#checkSurfaceEnvironment-2").is('**(NOT??)** :checked') ) {
        // do something
}
user1040259
quelle
3
Verwenden Sie ||diese Option, um nicht &&zu überprüfen, ob eines davon aktiviert ist. &&prüft, ob beide geprüft sind.
j08691

Antworten:

213

Ein zuverlässiger Weg, den ich benutze, ist:

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

Wenn Sie über markierte Elemente iterieren möchten, verwenden Sie das übergeordnete Element

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

Mehr Info:

Dies funktioniert gut, da für alle Kontrollkästchen eine Eigenschaft aktiviert ist, in der der tatsächliche Status des Kontrollkästchens gespeichert ist. Wenn Sie möchten, können Sie die Seite überprüfen und versuchen, ein Kontrollkästchen zu aktivieren und zu deaktivieren. Sie werden feststellen, dass das Attribut "aktiviert" (falls vorhanden) gleich bleibt. Dieses Attribut repräsentiert nur den Anfangszustand des Kontrollkästchens und nicht den aktuellen Zustand. Der aktuelle Status wird in der Eigenschaft gespeichert, die vom dom-Element für dieses Kontrollkästchen aktiviert wurde.

Siehe Eigenschaften und Attribute in HTML

Pablo Mescher
quelle
2
Umm ... das wird gerade eingestelltchecked = true
Naftali aka Neal
@Pablo - Überprüfen Sie meine Antwort unten, die ich auch eine zuverlässige / passende Option ist.
Aneesh Vijendran
@PabloMescher Hey, kannst du mir bitte helfen? Ich möchte tatsächlich feststellen, welche Kontrollkästchen unter mehreren aktiviert sind. Aktivieren / deaktivieren Sie das Textfeld daneben. Jede Hilfe wird sehr geschätzt.
1lastBr3ath
@ 1lastBr3ath sicher, wenn Sie jQuery verwenden, müssen Sie nur einen Selektor für das Textfeld relativ zum Kontrollkästchen finden und mein zweites Beispiel verwenden. Es würde ungefähr so ​​aussehen, wenn ($ (this) .prop ('checked')) {$ (this) .find ("<textboxSelector>") .attr ("disabled", true); }
Pablo Mescher
1
@Stophface In diesem Fall ist diese Eigenschaft immer ein Boolescher Wert, da es sich um eine berechnete Eigenschaft und nicht um eine Zeichenfolge handelt. Sie können also mit == davonkommen. Es ist jedoch ratsam, immer === zu verwenden, da dies nicht immer der Fall ist
Pablo Mescher
77
if (!$("#checkSurfaceEnvironment-1").is(":checked")) {
    // do something if the checkbox is NOT checked
}
Shweta
quelle
31

Sie können auch entweder die jQuery- .not()Methode oder den :not()Selektor verwenden:

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

JSFiddle-Beispiel


Zusätzliche Bemerkungen

Aus der jQuery-API-Dokumentation für den :not() Selektor :

Die .not () -Methode bietet Ihnen am Ende besser lesbare Auswahlmöglichkeiten, als komplexe Selektoren oder Variablen in einen : not () - Selektorfilter zu verschieben . In den meisten Fällen ist es eine bessere Wahl.

Aneesh Vijendran
quelle
1
! $ ("# checkSurfaceEnvironment"). is (": checked") gibt einen Booleschen Wert zurück. Es ist wahr, wenn das Kontrollkästchen nicht aktiviert ist. $ ('# checkSurfaceEnvironment'). not (': checked') gibt ein Array von DOM-Elementen zurück. Wenn Sie dies mit 'if' testen, wird 'true' zurückgegeben, auch wenn keine Übereinstimmung mit dem Selektor vorhanden war und das Array leer ist. Die einzige Möglichkeit, wie Ihre Antwort richtig sein könnte, besteht darin, i $ ('# checkSurfaceEnvironment'). Not (': checked'). Length zu testen, was 0 oder 1 zurückgibt.
Thibault Witzig
22

Ein alternativer Weg:

Hier ist ein funktionierendes Beispiel und hier ist der Code, Sie sollten auch prop verwenden.

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

Ich habe den Weg zum Umschalten des aktivierten Attributs auskommentiert.

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

Ich suchte nach einer direkteren Implementierung, wie von avijendr vorgeschlagen.

Ich hatte ein kleines Problem mit seiner / ihrer Syntax, aber ich habe das zum Laufen gebracht:

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

In meinem Fall hatte ich eine Tabelle mit einer Klasse user-forms, und ich war die Überprüfung , wenn eine der Kontrollkästchen, die die Zeichenfolge hatten checkPrintin ihrer idunkontrolliert war.

MsGirlPerl
quelle
5

Ich denke, der einfachste Weg (mit jQuery) zu überprüfen, ob das Kontrollkästchen aktiviert ist oder NICHT, ist:

wenn 'markiert':

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

wenn NICHT 'geprüft':

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

Hier habe ich einen Ausschnitt für diese Frage.

$(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
quelle
3

Um es so zu machen, .attr()wie Sie es getan haben, um zu sehen, ob es überprüft wurde .attr("checked", "checked"), und wenn es nicht ist, wäre es das.attr("checked") == undefined

Ayyp
quelle
1

Geben Sie true zurück, wenn alle checbox in einem div aktiviert sind

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
quelle
1

Einfach und leicht zu überprüfender oder ungeprüfter Zustand

<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
quelle
1

Probier diese

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

Wählen Sie im obigen Code das Element nach ID aus (#checkSurfaceEnvironment-1)und filtern Sie dann den überprüften Status nach (:checked)Filter heraus.

Es wird ein Array des überprüften Elementobjekts zurückgegeben. Wenn im Array ein Objekt vorhanden ist, ist die Bedingung erfüllt.

Satish Kumar Sonker
quelle
Obwohl Ihre Antwort hilfreich sein könnte, sollten Sie zumindest erklären, warum. Ihre Antwort wurde an die Moderationswarteschlange für Posts mit geringer Qualität übergeben (in der ich sie gerade ansehe). Ich schlage vor, dass Sie Ihre Antwort bearbeiten, um eine Erklärung hinzuzufügen.
Chris Spittles
1

Es gibt zwei Möglichkeiten, den Zustand zu überprüfen.

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

ODER Sie können diesen auch verwenden

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

Ich hoffe das ist nützlich für dich.

Gaurang Sondagar
quelle
1

Hier ist der einfachste Weg angegeben

 <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
quelle
0

Ich habe das benutzt und für mich gearbeitet!

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

Ich weiß, dass dies bereits beantwortet wurde, aber dennoch ist dies ein guter Weg, dies zu tun:

if ($("#checkbox").is(":checked")==false) {
    //Do stuff here like: $(".span").html("<span>Lorem</span>");
}
Hallo Welt
quelle
0
if($("#checkbox1").prop('checked') == false){
    alert('checkbox is not checked');
    //do something
}
else
{ 
    alert('checkbox is checked');
}
Rutvik kakadiya
quelle
4
Dies könnte zwar die Frage des Autors beantworten, es fehlen jedoch einige erklärende Wörter und / oder Links zur Dokumentation. Rohcode-Schnipsel sind ohne einige Ausdrücke nicht sehr hilfreich. Möglicherweise ist es auch sehr hilfreich , eine gute Antwort zu schreiben . Bitte bearbeiten Sie Ihre Antwort - Aus der Bewertung
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
quelle