Hoe controleer ik of een selectievakje is aangevinkt in jQuery?

Ik moet de eigenschap checkedvan een selectievakje aanvinken en een actie uitvoeren op basis van de aangevinkte eigenschap met behulp van jQuery.

Als het selectievakje agebijvoorbeeld is aangevinkt, moet ik een tekstvak tonen om agein te voeren, anders verberg ik het tekstvak.

Maar de volgende code retourneert standaard false:

if ($('#isAgeSelected').attr('checked')) {
  $("#txtAge").show();
} else {
  $("#txtAge").hide();
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" id="isAgeSelected"/>
<div id="txtAge" style="display:none">
  Age is selected
</div>

Antwoord 1, autoriteit 100%

Hoe kan ik de aangevinkte eigenschap met succes opvragen?

De eigenschap checkedvan een DOM-element met selectievakjes geeft u de status checkedvan het element.

Gezien uw bestaande code, zou u daarom dit kunnen doen:

if(document.getElementById('isAgeSelected').checked) {
    $("#txtAge").show();
} else {
    $("#txtAge").hide();
}

Er is echter een veel mooiere manier om dit te doen, met toggle:

$('#isAgeSelected').click(function() {
    $("#txtAge").toggle(this.checked);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" id="isAgeSelected"/>
<div id="txtAge" style="display:none">Age is something</div>

Antwoord 2, autoriteit 57%

Gebruik de is()-functie van jQuery:

if($("#isAgeSelected").is(':checked'))
    $("#txtAge").show();  // checked
else
    $("#txtAge").hide();  // unchecked

Antwoord 3, autoriteit 17%

JQuery > 1.6

<input type="checkbox" value="1" name="checkMeOut" id="checkMeOut" checked="checked" />
// traditional attr
$('#checkMeOut').attr('checked'); // "checked"
// new property method
$('#checkMeOut').prop('checked'); // true

De nieuwe eigenschapsmethode gebruiken:

if($('#checkMeOut').prop('checked')) {
    // something when checked
} else {
    // something else when not
}

Antwoord 4, autoriteit 7%

jQuery 1.6+

$('#isAgeSelected').prop('checked')

jQuery 1.5 en lager

$('#isAgeSelected').attr('checked')

Elke versie van jQuery

// Assuming an event handler on a checkbox
if (this.checked)

Alle krediet gaat naar Xian.


Antwoord 5, autoriteit 5%

Ik gebruik dit en dit werkt absoluut prima:

$("#checkkBoxId").attr("checked") ? alert("Checked") : alert("Unchecked");

Opmerking: als het selectievakje is aangevinkt, wordt true geretourneerd, anders niet gedefinieerd, dus controleer beter op de waarde “TRUE”.


Antwoord 6, autoriteit 5%

Gebruik:

<input type="checkbox" name="planned_checked" checked id="planned_checked"> Planned
$("#planned_checked").change(function() {
    if($(this).prop('checked')) {
        alert("Checked Box Selected");
    } else {
        alert("Checked Box deselect");
    }
});

   $("#planned_checked").change(function() {
        if($(this).prop('checked')) {
            alert("Checked Box Selected");
        } else {
            alert("Checked Box deselect");
        }
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="checkbox" name="planned_checked" checked id="planned_checked"> Planned

Antwoord 7, autoriteit 4%

Sinds JQuery 1.6, het gedrag van jQuery.attr()is gewijzigd en gebruikers zijn aangemoedigd om het niet te gebruiken om de gecontroleerde staat van een element op te halen. In plaats daarvan zou u jQuery.prop():

gebruiken

$("#txtAge").toggle(
    $("#isAgeSelected").prop("checked") // For checked attribute it returns true/false;
                                        // Return value changes with checkbox state
);

Twee andere mogelijkheden zijn:

$("#txtAge").get(0).checked
$("#txtAge").is(":checked")

8, Autoriteit 3%

Dit werkte voor mij:

$get("isAgeSelected ").checked == true

waar isAgeSelectedis de ID van de besturing.

Ook, @ Karim79’s Antwoord werkt prima. Ik weet niet zeker wat ik heb gemist op het moment dat ik het heb getest.

Opmerking, dit is antwoord Gebruikt Microsoft Ajax, niet jQuery


9, Autoriteit 3%

Als u een bijgewerkte versie van jQuery gebruikt, moet u voor .prop-methode gaan om uw probleem op te lossen:

$('#isAgeSelected').prop('checked')retourneert trueindien ingecheckt en falseindien uitgeschakeld. Ik heb het bevestigd en ik kwam eerder dit probleem tegen. $('#isAgeSelected').attr('checked')en $('#isAgeSelected').is('checked')retourneert undefinedwat geen waardig antwoord is voor de situatie. Zo doen zoals hieronder.

if($('#isAgeSelected').prop('checked')) {
    $("#txtAge").show();
} else {
    $("#txtAge").hide();
}

Hopelijk helpt het :)- Bedankt.


Antwoord 10, autoriteit 2%

Gebruik:

<input type="checkbox" id="abc" value="UDB">UDB
<input type="checkbox" id="abc" value="Prasad">Prasad
$('input#abc').click(function(){
  if($(this).is(':checked'))
  {
    var checkedOne=$(this).val()
    alert(checkedOne);
    // Do some other action
  }
})

Dit kan helpen als u wilt dat de vereiste actie alleen wordt uitgevoerd als u het vakje aanvinkt en niet op het moment dat u het vinkje verwijdert.


Antwoord 11, autoriteit 2%

Het gebruik van de gebeurtenis-handler Clickvoor de eigenschap checkbox is onbetrouwbaar, aangezien de eigenschap checkedkan veranderen tijdens de uitvoering van de gebeurtenis-handler zelf!

Idealiter zou je je code in een change-gebeurtenis-handler willen plaatsen, zoals deze wordt geactiveerd telkens wanneer de waarde van het selectievakje wordt gewijzigd (onafhankelijk van hoehet is zo gedaan).

$('#isAgeSelected').bind('change', function () {
   if ($(this).is(':checked'))
     $("#txtAge").show();
   else
     $("#txtAge").hide();
});

12, Autoriteit 2%

Ik geloof dat je dit zou kunnen doen:

if ($('#isAgeSelected :checked').size() > 0)
{
    $("#txtAge").show(); 
} else { 
    $("#txtAge").hide();
}

13, Autoriteit 2%

Ik rende naar exact hetzelfde probleem. Ik heb een asp.net selectievakje

<asp:CheckBox ID="chkBox1" CssClass='cssChkBox1' runat="server" />

In de jQuery-code heb ik de volgende selector gebruikt om te controleren of het selectievakje werd gecontroleerd of niet, en het lijkt te werken als een charme.

if ($("'.cssChkBox1 input[type=checkbox]'").is(':checked'))
{ ... } else { ... }

Ik weet zeker dat u ook de ID kunt gebruiken in plaats van de CSSCLASS,

if ($("'#cssChkBox1 input[type=checkbox]'").is(':checked'))
{ ... } else { ... }

Ik hoop dat dit je helpt.


Antwoord 14, autoriteit 2%

Deze code helpt je

$('#isAgeSelected').click(function(){
   console.log(this.checked);
   if(this.checked == true) {
        $("#txtAge").show();
    } else {
       $("#txtAge").hide();
   }
});

Antwoord 15

Er zijn veel manieren om te controleren of een selectievakje is aangevinkt of niet:

Manier om te controleren met jQuery

if (elem.checked)
if ($(elem).prop("checked"))
if ($(elem).is(":checked"))
if ($(elem).attr('checked'))

Controleer voorbeeld of document ook:


Antwoord 16

Dit werkt voor mij:

/* isAgeSelected being id for checkbox */
$("#isAgeSelected").click(function(){
  $(this).is(':checked') ? $("#txtAge").show() : $("#txtAge").hide();
});

Antwoord 17

U kunt de gebeurtenis changevan het selectievakje proberen om de statuswijziging :checkedbij te houden.

$("#isAgeSelected").on('change', function() {
  if ($("#isAgeSelected").is(':checked'))
    alert("checked");
  else {
    alert("unchecked");
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" id="isAgeSelected" />
<div id="txtAge" style="display:none">
  Age is selected
</div>

Antwoord 18

Dit is een andere methode om hetzelfde te doen:

$(document).ready(function (){
    $('#isAgeSelected').click(function() {
        // $("#txtAge").toggle(this.checked);
        // Using a pure CSS selector
        if ($(this.checked)) {
            alert('on check 1');
        };
        // Using jQuery's is() method
        if ($(this).is(':checked')) {
            alert('on checked 2');
        };
        //  // Using jQuery's filter() method
        if ($(this).filter(':checked')) {
            alert('on checked 3');
        };
    });
});
<script src="https://code.jquery.com/jquery-1.9.1.js"></script>
<input type="checkbox" id="isAgeSelected"/>
<div id="txtAge" style="display:none">Age is something</div>

Antwoord 19

Gebruik dit:

if ($('input[name="salary_in.Basic"]:checked').length > 0)

De lengte is groter dan nul als het selectievakje is aangevinkt.


Antwoord 20

Mijn manier om dit te doen is:

if ( $("#checkbox:checked").length ) {       
    alert("checkbox is checked");
} else {
    alert("checkbox is not checked");
}

Antwoord 21

$(selector).attr('checked') !== undefined

Dit retourneert trueals de invoer is aangevinkt en falseals dit niet het geval is.


Antwoord 22

$(document).ready(function() {    
    $('#agecheckbox').click(function() {
        if($(this).is(":checked"))
        {
            $('#agetextbox').show();
        } else {
            $('#agetextbox').hide();
        }
    });
});

Antwoord 23

U kunt gebruiken:

 if(document.getElementById('isAgeSelected').checked)
    $("#txtAge").show();  
  else
    $("#txtAge").hide();

if($("#isAgeSelected").is(':checked'))
  $("#txtAge").show();  
else
  $("#txtAge").hide();

Beide zouden moeten werken.


Antwoord 24

1) Als uw HTML-opmaak is:

<input type="checkbox"  />

attr gebruikt:

$(element).attr("checked"); // Will give you undefined as initial value of checkbox is not set

Als prop wordt gebruikt:

$(element).prop("checked"); // Will give you false whether or not initial value is set

2) Als uw HTML-markup:

<input type="checkbox"  checked="checked" />// May be like this also  checked="true"

Attward:

$(element).attr("checked") // Will return checked whether it is checked="true"

Prop gebruikt:

$(element).prop("checked") // Will return true whether checked="checked"

25

Dit voorbeeld is voor knop.

Probeer het volgende:

<input type="button" class="check" id="checkall" value="Check All" />  &nbsp; <input type="button" id="remove" value="Delete" /> <br/>
<input type="checkbox" class="cb-element"  value="1" /> Checkbox  1 <br/>
<input type="checkbox" class="cb-element"  value="2" /> Checkbox  2 <br/>
<input type="checkbox" class="cb-element"  value="3" /> Checkbox  3 <br/>
$('#remove').attr('disabled', 'disabled'); 
$(document).ready(function() {  
    $('.cb-element').click(function() {
        if($(this).prop('checked'))
        {
            $('#remove').attr('disabled', false);
        }
        else
        {
            $('#remove').attr('disabled', true);
        }
    });   
    $('.check:button').click(function()
{
    var checked = !$(this).data('checked');
    $('input:checkbox').prop('checked', checked);
    $(this).data('checked', checked);
    if(checked == true)
    {
        $(this).val('Uncheck All');
         $('#remove').attr('disabled', false);
    }
    else if(checked == false)
    {
        $(this).val('Check All');
        $('#remove').attr('disabled', true);
    }
});
});

Antwoord 26

Het beste antwoord deed het niet voor mij. Dit deed het echter wel:

<script type="text/javascript">
    $(document).ready(function(){
        $("#li_13").click(function(){
            if($("#agree").attr('checked')){
                $("#saveForm").fadeIn();
            }
            else
            {
                $("#saveForm").fadeOut();
            }
        });
    });
</script>

Als er op het element #li_13 wordt geklikt, wordt in principe gecontroleerd of het element # akkoord (wat het selectievakje is) is aangevinkt met behulp van de functie .attr('checked'). Als het dan fadeIn het #saveForm element is, en zo niet fadeOut het saveForm element.


Antwoord 27

Hoewel u een JavaScript-oplossing voor uw probleem heeft voorgesteld (een textboxweergeven wanneer een checkboxcheckedis), kan dit probleem worden opgelost gewoon door css. Met deze aanpak werkt uw formulier voor gebruikers die JavaScript hebben uitgeschakeld.

Ervan uitgaande dat je de volgende HTML hebt:

<label for="show_textbox">Show Textbox</label>
<input id="show_textbox" type="checkbox" />
<input type="text" />

U kunt de volgende CSS gebruiken om de gewenste functionaliteit te bereiken:

#show_textbox:not(:checked) + input[type=text] {display:none;}

Voor andere scenario’s kunt u geschikte CSS-kiezers bedenken.

Hier is een viool om deze aanpak te demonstreren.


Antwoord 28

Ik gebruik dit:

<input type="checkbox" id="isAgeSelected" value="1" /> <br/>
 <input type="textbox" id="txtAge" />
 $("#isAgeSelected").is(':checked') ? $("#txtAge").show() : $("#txtAge").hide();

Antwoord 29

Toggle: 0/1 of anders

<input type="checkbox" id="nolunch" />
<input id="checklunch />"
    $('#nolunch').change(function () {
    if ($(this).is(':checked')) {
        $('#checklunch').val('1');
    };
    if ($(this).is(':checked') == false) {
        $('#checklunch').val('0');
    };
});

Other episodes