jQuery:测试是否未选中复选框

时间:2012-07-11 19:37:06

标签: jquery if-statement

我无法搞清楚这一点。我有两个复选框(将来会有更多):

  • checkSurfaceEnvironment-1
  • checkSurfaceEnvironment-2

基本上,我想编写一个if语句并测试其中一个是否被选中而另一个未被检查。实现以下目标的最简单方法是什么:

if ( $("#checkSurfaceEnvironment-1").attr('checked', true) &&
     $("#checkSurfaceEnvironment-2").is('**(NOT??)** :checked') ) {
        // do something
}

18 个答案:

答案 0 :(得分:188)

我使用的一种可靠方式是:

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

如果要迭代已检查的元素,请使用父元素

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

更多信息:

这很有效,因为所有复选框都选中了一个属性,用于存储复选框的实际状态。如果您希望可以检查页面并尝试选中并取消选中一个复选框,您会注意到“已检查”属性(如果存在)将保持不变。此属性仅表示复选框的初始状态,而不是当前状态。当前状态存储在该复选框的dom元素的已检查属性中。

请参阅Properties and Attributes in HTML

答案 1 :(得分:72)

if (!$("#checkSurfaceEnvironment-1").is(":checked")) {
    // do something if the checkbox is NOT checked
}

答案 2 :(得分:28)

您还可以使用jQuery .not()方法或:not()选择器:

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

JSFiddle Example


附加说明

来自:not() 选择器的jQuery API文档:

  

.not() 方法最终会为您提供更多可读性   选择而不是将复杂的选择器或变量推送到:not()   选择器过滤器。在大多数情况下,这是一个更好的选择。

答案 3 :(得分:21)

另一种方式:

这是一个working example,这里是代码,你也应该使用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");
    }
});​

我注释了切换checked属性的方法。

答案 4 :(得分:8)

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

答案 5 :(得分:5)

我正在寻找像avijendr建议的更直接的实施方式。

我的语法有点麻烦,但是我让它起作用了:

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

在我的情况下,我有一个包含类user-forms的表,我正在检查是否取消选中了checkPrint中包含字符串id的任何复选框。

答案 6 :(得分:3)

要像你一样使用.attr(),要查看它是否为.attr("checked", "checked"),如果不是,则为.attr("checked") == undefined

答案 7 :(得分:3)

我在这里有一个问题的片段。

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

答案 8 :(得分:2)

我认为(使用jQuery)检查复选框是否已选中的最简单方法是:

如果已选中:

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

如果未“选中”:

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

答案 9 :(得分:1)

尝试这个

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

在上面的代码中,按ID (#checkSurfaceEnvironment-1)选择元素,然后按(:checked)过滤器过滤掉它的检查状态。

它将返回已检查元素对象的数组。如果数组中存在任何对象,那么条件是否满足。

答案 10 :(得分:1)

简单易行的检查或未检查状态

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

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

答案 11 :(得分:1)

有两种方法可以检查状况。

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

或者你也可以使用这个

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

我希望这对你有用。

答案 12 :(得分:1)

这是最简单的方法

 <script type="text/javascript">

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

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

                }

            });

        });

    </script>

答案 13 :(得分:1)

如果在div中选中所有复选框,则返回true

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

答案 14 :(得分:0)

我用过这个并为我工作过!

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

答案 15 :(得分:0)

我知道这已经得到了回答,但是,这是一个很好的方法:

if ($("#checkbox").is(":checked")==false) {
    //Do stuff here like: $(".span").html("<span>Lorem</span>");
}

答案 16 :(得分:0)

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

答案 17 :(得分:-3)

$("#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
    }

});