获取jQuery中的复选框值

maz*_*ztt 495 html forms checkbox jquery

如何在jQuery中获取复选框的值?

Sar*_*raz 956

要获取Value属性的值,您可以执行以下操作:

$("input[type='checkbox']").val();
Run Code Online (Sandbox Code Playgroud)

或者,如果您设置了classid为它,您可以:

$('#check_id').val();
$('.check_class').val();
Run Code Online (Sandbox Code Playgroud)

但是,无论是否检查,这都将返回相同的值,这可能会造成混淆,因为它与提交的表单行为不同.

要检查是否已选中,请执行以下操作:

if ($('#check_id').is(":checked"))
{
  // it is checked
}
Run Code Online (Sandbox Code Playgroud)

  • 如果我在Chrome中尝试`$($ 0).val()`并取消选中该复选框,即使没有勾选,答案也会"开启".但是`$($ 0).is(":checked")`返回正确的值. (121认同)
  • 抱歉,这个答案实际上浪费了我大约 1 个小时的时间。使用 `.val();` 所有复选框都处于“打开”状态,我强烈建议任何阅读本文的人使用 `.is(":checked")`! (7认同)
  • 将 `$('#check_id').val();` 替换为 `$('#check_id').is(":checked");` 返回值 true 或 false。 (6认同)
  • 如果页面上有多个复选框,第一个示例会怎么做?顺便说一句,它可以用更短的方式写成`$("input:checkbox")`.此外,类选择器中似乎有一个拼写错误... (3认同)
  • @Jawa Per https://api.jquery.com/checkbox-selector/` [type ="checkbox"]`在现代浏览器中比`:checkbox`具有更好的性能. (2认同)

Ala*_*blo 205

这两种方式正在发挥作用:

  • $('#checkbox').prop('checked')
  • $('#checkbox').is(':checked')(谢谢@mgsloan)

$('#test').click(function() {
    alert("Checkbox state (method 1) = " + $('#test').prop('checked'));
    alert("Checkbox state (method 2) = " + $('#test').is(':checked'));
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
Check me: <input id="test" type="checkbox" />
Run Code Online (Sandbox Code Playgroud)

  • .is('checked')不起作用,因为它应该是.is(':checked') (8认同)

RDK*_*RDK 55

尝试这个小解决方案:

$("#some_id").attr("checked") ? 1 : 0;
Run Code Online (Sandbox Code Playgroud)

要么

$("#some_id").attr("checked") || 0;
Run Code Online (Sandbox Code Playgroud)

  • 不得不将'attr'改为'prop'然后这对我有用 (13认同)

Rez*_*eza 33

检索复选框值的唯一正确方法如下

if ( elem.checked ) 
if ( $( elem ).prop( "checked" ) ) 
if ( $( elem ).is( ":checked" ) ) 
Run Code Online (Sandbox Code Playgroud)

正如jQuery网站上的官方文档中所解释的那样.其余的方法与复选框的属性无关,它们检查属性,这意味着它们在加载时测试复选框的初始状态.简而言之:

  • 当你有元素,你知道这是一个复选框,你可以简单地通过读取其属性,你会不会需要jQuery的为(即elem.checked),也可以使用$(elem).prop("checked"),如果你想依靠jQuery的.
  • 如果您需要知道(或比较)元素首次加载时的值(即默认值),正确的方法是$(elem).is(":checked").

答案有误导性,请自行检查以下内容:

http://api.jquery.com/prop/


Gre*_*g A 19

只是澄清事情:

$('#checkbox_ID').is(":checked")
Run Code Online (Sandbox Code Playgroud)

将返回'true'或'false'


Nal*_*ran 13

$('#checkbox_id').val();
$('#checkbox_id').is(":checked");
$('#checkbox_id:checked').val();
Run Code Online (Sandbox Code Playgroud)

  • .val()不起作用.无论选中,都返回'on'. (7认同)

Jas*_*jal 10

jQuery(".checkboxClass").click(function(){
        var selectedCountry = new Array();
        var n = jQuery(".checkboxClass:checked").length;
        if (n > 0){
            jQuery(".checkboxClass:checked").each(function(){
                selectedCountry.push($(this).val());
            });
        }
        alert(selectedCountry);
    });
Run Code Online (Sandbox Code Playgroud)


Kev*_*hea 8

简单但有效,并假设您知道将找到该复选框:

$("#some_id")[0].checked;
Run Code Online (Sandbox Code Playgroud)

true/false


Kam*_*mal 7

//By each()
var testval = [];
 $('.hobbies_class:checked').each(function() {
   testval.push($(this).val());
 });


//by map()
var testval = $('input:checkbox:checked.hobbies_class').map(function(){
return this.value; }).get().join(",");

 //HTML Code

 <input type="checkbox" value="cricket" name="hobbies[]"  class="hobbies_class">Cricket 
  <input type="checkbox" value="hockey" name="hobbies[]" class="hobbies_class">Hockey
Run Code Online (Sandbox Code Playgroud)

示例
演示


Tay*_*yat 7

$("input[name='gender']:checked").val();
Run Code Online (Sandbox Code Playgroud)

这对我来说有效,任何寻找简单方法的人都必须尝试这种语法。谢谢


Jos*_*ier 6

尽管这个问题是要求jQuery解决方案,但这是一个纯粹的JavaScript答案,因为没有人提到它.

没有jQuery:

只需选择元素并访问checked属性(返回一个布尔值).

var checkbox = document.querySelector('input[type="checkbox"]');

alert(checkbox.checked);
Run Code Online (Sandbox Code Playgroud)
<input type="checkbox"/>
Run Code Online (Sandbox Code Playgroud)


这是一个听取change事件的快速示例:

var checkbox = document.querySelector('input[type="checkbox"]');
checkbox.addEventListener('change', function (e) {
    alert(this.checked);
});
Run Code Online (Sandbox Code Playgroud)
<input type="checkbox"/>
Run Code Online (Sandbox Code Playgroud)


要选择已检查的元素,请使用:checked伪类(input[type="checkbox"]:checked).

下面是一个示例,它迭代已检查的input元素并返回已检查元素名称的映射数组.

这里的例子

var elements = document.querySelectorAll('input[type="checkbox"]:checked');
var checkedElements = Array.prototype.map.call(elements, function (el, i) {
    return el.name;
});

console.log(checkedElements);
Run Code Online (Sandbox Code Playgroud)

var elements = document.querySelectorAll('input[type="checkbox"]:checked');
var checkedElements = Array.prototype.map.call(elements, function (el, i) {
    return el.name;
});

console.log(checkedElements);
Run Code Online (Sandbox Code Playgroud)
<div class="parent">
    <input type="checkbox" name="name1" />
    <input type="checkbox" name="name2" />
    <input type="checkbox" name="name3" checked="checked" />
    <input type="checkbox" name="name4" checked="checked" />
    <input type="checkbox" name="name5" />
</div>
Run Code Online (Sandbox Code Playgroud)

  • @MichaelCole - 很公平,总是感谢反馈。这个答案的最初意图是表明,当在原生 DOM 元素上可以轻松访问 `checked` 属性时,可以在像这样的微不足道的情况下避免使用 jQuery。一些搜索此类问题/答案的人通常不知道 jQuery 有时不是必需的。换句话说,心胸狭窄的人不是这个答案的目标人群。 (3认同)
  • 这不能回答问题。 (2认同)
  • @MichaelCole 不同意。如果有人试图提出一个复杂的解决方案,并且有一个更简单的替代方案,那么我们有责任也提到更简单(更好?)的解决方案。已投赞成票。 (2认同)

Dul*_*sta 5

您可以使用以下内容。经测试工作正常。

$('#checkbox_id').is(":checked"); // jQuery
Run Code Online (Sandbox Code Playgroud)

如果checkbox选中,则会返回true,反之亦然。

下面的代码片段适用于任何尝试在 JavaScript 中执行相同操作的人。

document.getElementById("checkbox_id").checked //JavaScript
Run Code Online (Sandbox Code Playgroud)

true如果checkbox被选中则返回