如何检查是不是在 jQuery 中选中了复选框?

Posted

技术标签:

【中文标题】如何检查是不是在 jQuery 中选中了复选框?【英文标题】:How do I check whether a checkbox is checked in jQuery?如何检查是否在 jQuery 中选中了复选框? 【发布时间】:2010-10-28 10:52:19 【问题描述】:

我需要检查一个复选框的checked 属性,并使用jQuery 根据选中的属性执行一个操作。

例如,如果age复选框被选中,那么我需要显示一个文本框来输入age,否则隐藏文本框。

但下面的代码默认返回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>

如何成功查询checked属性?

【问题讨论】:

在此处查看使用 jQuery 的其他一些方法 ***.com/a/22019103/1868660 为什么不$('#isAgeSelected').checked 从 jquery 1.6 开始,处理属性和属性的方式发生了重大变化。对于您的情况,以下应该有效: if($('#isAgeSelected').prop("checked")) $("#txtAge").show(); 其他 $("#txtAge").hide(); if 语句中的条件将根据复选框的选中/未选中状态简单地返回 true 或 false。有关更多详细信息,请参阅this 链接上的属性与属性部分。 要获得全面(和正确)的答案,请参阅:***.com/questions/426258/… 由于jQuery选择器返回数组,所以可以使用$('#isAgeSelected')[0].checked 【参考方案1】:

切换:0/1 否则

<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');
    ;
);

【讨论】:

【参考方案2】:

我认为这将是一个简单的

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

【讨论】:

【参考方案3】:

请尝试下面的代码来检查复选框是否被选中

$(document).ready(function()

    $("#isAgeSelected").on('change',function()

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

   );

);

【讨论】:

【参考方案4】:

我确定这不是什么启示,但我并没有在一个例子中看到全部:

所有选中复选框的选择器(在页面上):

$('input[type=checkbox]:checked')

【讨论】:

【参考方案5】:

我在 Firefox 9.0.1 中验证了以下内容可用于捕获复选框后更改的状态:

$("#mycheckbox").change(function() 
    var value = $(this).prop("checked") ? 'true' : 'false';                     
    alert(value);
);

【讨论】:

【参考方案6】:
if($("#checkkBoxId").is(':checked'))
  alert("Checked=true");

if($("#checkkBoxId").attr('checked') == true)
  alert("checked=true");

【讨论】:

【参考方案7】:

从本地文件系统中包含 jQuery。我用的是谷歌的CDN,也有很多CDN可供选择。

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

只要点击mycheck 类中的复选框,代码就会执行。如果选中当前单击的复选框,则它将禁用所有其他复选框并启用当前复选框。如果当前未选中,它将再次启用所有复选框以重新选中。

<script type="text/javascript">
    $(document).ready(function() 

        var checkbox_selector = '.mycheck input[type=checkbox]';

        $(checkbox_selector).click(function() 
            if ($($(this)).is(':checked')) 

                // Disable all checkboxes
                $(checkbox_selector).attr('disabled', 'disabled');

                // Enable current one
                $($(this)).removeAttr('disabled');
            
            else 
                // If unchecked open all checkbox
                $(checkbox_selector).removeAttr('disabled');
            
        );
    );
</script>

简单的测试表格

<form method="post" action="">
    <div class="mycheck">
        <input type="checkbox" value="1" /> Television
        <input type="checkbox" value="2" /> Computer
        <input type="checkbox" value="3" /> Laptop
        <input type="checkbox" value="4" /> Camera
        <input type="checkbox" value="5" /> Music Systems
    </div>
</form>

输出画面:

【讨论】:

【参考方案8】:

input type="checkbox"checked 属性映射到defaultChecked 属性, 映射到checked 属性。

因此,当未选中复选框时,在页面中执行某些操作时,请改用prop() 方法。它获取属性值并随着复选框状态的变化而变化。

在这些情况下使用 attr() 或 getAttribute(在纯 JavaScript 中)不是正确的处理方式。

如果elem 是相关复选框,则执行以下操作来获取值:

elem.checked

$(elem).prop('checked')

【讨论】:

【参考方案9】:

自动化

$(document).ready(function()

    $('#isAgeSelected').change(function()
    
        alert( 'value =' + $('#chkSelect').attr('checked') );
    );
);

html

<b> <input type="isAgeSelected" id="chkSelect" /> Age Check </b>

<br/><br/>

<input type="button" id="btnCheck" value="check" />

jQuery

$(document).ready(function()

    $('#btnCheck').click(function()
    
        var isChecked = $('#isAgeSelected').attr('checked');

        if (isChecked == 'checked')
            alert('check-box is checked');
        else
            alert('check-box is not checked');
    )
);

Ajax

function check()

    if (isAgeSelected())
        alert('check-box is checked');
    else
        alert('check-box is not checked');


function isAgeSelected()

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

【讨论】:

【参考方案10】:

$(document).on("click","#isAgeSelected",function()
  if($(this).prop("checked") == true)
    $("#txtAge").show();
  
  else if($(this).prop("checked") == false)
    $("#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">
<input type="text" name="age" placeholder="Please enter age" />
</div>

【讨论】:

【参考方案11】:

这是我认为我需要有效地执行此类操作的最少代码量。我发现这种方法很有用;它返回一个选中的复选框数组,然后您可以使用它们的值(此解决方案使用 jQuery):

// This is how you get them
var output = "";
var checkedBoxes = $("DivCheckBoxesAreIn").children("input:checked");
if(checkedBoxes.length <= 0) 
    alert('Please select check boxes');
    return false;
;

// And this is how you use them:
checkedBoxes.each(function() 
    output +=  this.value + ", ";
;

打印“输出”将为您提供一个以逗号分隔的值列表。

【讨论】:

【参考方案12】:

像下面这样简单地使用它

 $('#isAgeSelected').change(function() 
     if ($(this).is(":checked"))  // or if($("#isAgeSelected").attr('checked') == true)
         $('#txtAge').show();
      else 
         $('#txtAge').hide();
     
 );

【讨论】:

【参考方案13】:

使用纯 JavaScript

let checkbox = document.getElementById('checkboxID');

if(checkbox.checked) 
  alert('is checked');
 else 
  alert('not checked yet');

【讨论】:

【参考方案14】:

我遇到了同样的问题,并且发布的解决方案似乎都不起作用,然后我发现这是因为 ASP.NET 将 CheckBox 控件呈现为内部带有 INPUT 的 SPAN,因此 CheckBox ID 实际上是一个 ID SPAN,不是 INPUT,所以你应该使用:

$('#isAgeSelected input')

而不是

$('#isAgeSelected')

然后上面列出的所有方法都应该有效。

【讨论】:

【参考方案15】:

这是一个示例,其中包括初始化显示/隐藏以匹配页面加载时复选框的状态;考虑到当您刷新页面时,firefox记住复选框的状态,但不会记住显示/隐藏元素的状态。

$(function() 
    // initialise visibility when page is loaded
    $('tr.invoiceItemRow').toggle($('#showInvoiceItems').attr('checked'));
    // attach click handler to checkbox
    $('#showInvoiceItems').click(function() $('tr.invoiceItemRow').toggle(this.checked);)
);

(在这个问题的其他答案的帮助下)

【讨论】:

【参考方案16】:

这是我的解决方法:

$('#vcGoButton').click(function () 
    var buttonStatus = $('#vcChangeLocation').prop('checked');
    console.log("Status is " + buttonStatus);
    if (buttonStatus) 
        var address = $('#vcNewLocation').val();
        var cabNumber = $('#vcVehicleNumber').val();
        $.get('postCabLocation.php',
              address: address, cabNumber: cabNumber,
              function(data) 
                  console.log("Changed vehicle " + cabNumber + " location to " + address );
              );
    
    else 
        console.log("VC go button clicked, but no location action");
    
);

【讨论】:

【参考方案17】:

二传手:

$("#chkmyElement")[0].checked = true;

吸气剂:

if($("#chkmyElement")[0].checked) 
   alert("enabled");
 else 
   alert("disabled");

【讨论】:

【参考方案18】:

用途:

$(this).toggle($("input:checkbox", $(this))[0].checked);

当您选择脱离上下文时,请记住您需要 [0] 才能访问复选框。

【讨论】:

【参考方案19】:

我实际上更喜欢change 事件。

$('#isAgeSelected').change(function() 
    $("#txtAge").toggle(this.checked);
);

Demo Fiddle

【讨论】:

【参考方案20】:

试试这个,

$('#isAgeSelected').click(function() 
    if(this.checked)
        $("#txtAge").show();
     else
        $("#txtAge").hide();
     
);

【讨论】:

【参考方案21】:

一个选择器返回多个对象,它必须取数组中的第一项:

// Collection
var chckremember = $("#chckremember");


// Result boolen
var ischecked=chckremember[0].checked;

【讨论】:

【参考方案22】:

我使用的是 jQuery 1.11.1,我在设置和读取复选框值时也遇到了麻烦。

我终于通过这两个函数解决了:

function setCheckboxValue(checkBoxId, checked) 
    if (checkBoxId && (checked === true || checked === false)) 
        var elem = $('#' + checkBoxId);
        if (checked === true) 
            elem.attr('checked', 'checked');
         else 
            elem.removeAttr('checked');
        
    


function isChecked(checkBoxId) 
    return $('#' + checkBoxId).attr('checked') != null;

它可能看起来有点脏,但它解决了我在不同类型浏览器中遇到的所有有线问题。

【讨论】:

【参考方案23】:

你可以试试这个代码:

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

【讨论】:

【参考方案24】:

jQuery prop() 方法提供了一种简单、有效且可靠的方法来跟踪复选框的当前状态。它在所有情况下都能很好地工作,因为每个复选框都有一个 checked 属性,用于指定其选中或未选中状态。

不要误解它与选中的属性。 checked 属性仅定义复选框的初始状态,而不是当前状态。让我们看看它是如何工作的:

<script>
    $(document).ready(function()
        $('input[type="checkbox"]').click(function()
            if($(this).prop("checked") == true)
                console.log("Checkbox is checked.");
            
            else if($(this).prop("checked") == false)
                console.log("Checkbox is unchecked.");
            
        );
    );
</script>

详解:jQuery prop()

不过,你也可以使用jQuery的is()函数

if($("#isAgeSelected").is(':checked'))
    $("#txtAge").show();  // Age is selected - Show the Age
else
    $("#txtAge").hide();  // Age is not selected - Hide the Age

【讨论】:

【参考方案25】:
if( undefined == $('#isAgeSelected').attr('checked') ) 
    $("#txtAge").hide();
 else 
    $("#txtAge").show();

【讨论】:

【参考方案26】:

您好,您可以使用普通的Javascript,如下所示:

document.getElementById('checkboxOption').addEventListener('click',      
   event => console.log(event.target.checked)
);
&lt;label&gt;&lt;input type="checkbox" id="checkboxOption"&gt;Check Option&lt;/label&gt;

【讨论】:

【参考方案27】:

这个解决方案怎么样?

$("#txtAge")[
    $("#isAgeSelected").is(':checked') ?
    'show' :
    'hide'
]();

【讨论】:

【参考方案28】:

我需要检查复选框的选中属性并使用 jQuery 基于选中属性执行操作。

E.X -

1) 如果年龄复选框被选中,则在加载时运行以获取复选框值,然后我需要显示一个文本框来输入年龄,否则隐藏文本框。

2) 如果年龄复选框被选中,那么我需要显示一个文本框来输入年龄,否则使用复选框的单击事件隐藏文本框。

所以代码默认不返回false:

尝试以下方法:

<html>
        <head>
            <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
        </head>
        <body>
            <h1>Jquery Demo</h1>
            <input type="checkbox" name="isAge" checked id="isAge"> isAge <br/>
            <div id="Age" style="display:none">
              <label>Enter your age</label>
              <input type="number" name="age">
            </div>
            <script type="text/javascript">
            if(document.getElementById('isAge').checked) 
                $('#Age').show();
             else 
                $('#Age').hide();
               
            $('#isAge').click(function() 
                if(document.getElementById('isAge').checked) 
                    $('#Age').show();
                 else 
                    $('#Age').hide();
                
            ); 
            </script>
        </body>
    </html>

这是修改后的版本:https://jsfiddle.net/sedhal/0hygLtrz/7/

【讨论】:

【参考方案29】:

在纯js复选框状态下更容易阅读

isAgeSelected.checked

function check() 
  txtAge.style.display= isAgeSelected.checked ? 'block':'none';
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

Age <input type="checkbox" id="isAgeSelected"/>

<button onclick="check()">Check</button>

<div id="txtAge" style="display:none">
Age is selected
</div>

【讨论】:

【参考方案30】:

如果您需要知道是否在纯javascript 中选中了复选框,您应该使用此代码。

let checkbox =document.getElementById('myCheckboxId');
if(checkbox.checked) 
    alert("element is checked");
 else 
    alert("element is  ot checked");

【讨论】:

以上是关于如何检查是不是在 jQuery 中选中了复选框?的主要内容,如果未能解决你的问题,请参考以下文章

如何检查是不是在 jQuery 中选中了复选框?

如何检查是不是在 jQuery 中选中了复选框?

如何检查是不是在 jQuery 中选中了复选框?

如何检查是不是在 jQuery 中选中了复选框?

如何检查用户是不是使用 jQuery/Javascript 从一组复选框中选中了至少一个复选框?

如何检查是不是在 qtablewidget 中选中了复选框?