测试是否使用jQuery选中了一个复选框


588

如果选中此复选框,那么我只需要将值设为1;否则,我需要将其设置为0。如何使用jQuery?

$("#ans").val() 在这种情况下,总是会给我一项权利:

<input type="checkbox" id="ans" value="1" />

2
.val()用于获取value属性,而不是检查状态。value属性可以是任何东西,不需要是布尔值。
巴勃罗·帕佐斯

如果您还在,您可能想要更新现代软件的公认答案……很多人仍然看到这个问题
xaxxon

Answers:


1008

采用 .is(':checked')以确定它是否已选中,然后设置相应的值。

更多信息在这里。


1
此外,当在if子句中执行$(“#id”)。is(“ checked”)时,返回的结果为true或false,而不是on / off,您可以将其发送到后端脚本做你想做的
Zanoldor

1
如今,这可能无关紧要:ReSharper(我想)输出警告“ “已检查的伪类与Internet Explorer 8.0不兼容 ”。
Uwe Keim

211
$("#ans").attr('checked') 

会告诉您是否已检查。您还可以使用第二个参数true / false来选中/取消选中该复选框。

$("#ans").attr('checked', true);

根据评论,使用prop而不是attr可用时。例如:

$("#ans").prop('checked')

90

只需使用 $(selector).is(':checked')

它返回一个布尔值。



21

Stefan Brinkmann的答案很好,但对初学者来说还不完整(省略了变量分配)。只是澄清一下:

// this structure is called a ternary operator
var cbAns = ( $("#ans").is(':checked') ) ? 1 : 0;

它是这样的:

 var myVar = ( if test goes here ) ? 'ans if yes' : 'ans if no' ;

例:

var myMath = ( 1 > 2 ) ? 'yes' : 'no' ;
alert( myMath );

警报“否”

如果这有帮助,请支持Stefan Brinkmann的答案。


18

您可以尝试以下方法:

$('#studentTypeCheck').is(":checked");

15

我之前也发现过同样的问题,希望该解决方案可以为您提供帮助。首先,将自定义属性添加到您的复选框:

<input type="checkbox" id="ans" value="1" data-unchecked="0" />

编写jQuery扩展以获取价值:

$.fn.realVal = function(){
    var $obj = $(this);
    var val = $obj.val();
    var type = $obj.attr('type');
    if (type && type==='checkbox') {
        var un_val = $obj.attr('data-unchecked');
        if (typeof un_val==='undefined') un_val = '';
        return $obj.prop('checked') ? val : un_val;
    } else {
        return val;
    }
};

使用代码获取复选框值:

$('#ans').realVal();

你可以在这里测试


10
...因为jQuery被称为“多写少写”库
myshadowself13年

简而言之,您已经走了很远JQUERY希望开发人员写的更少,做的更多。一个简单的问题值得一个简单的解决方案
ShapCyber

是的,同意,少写,多做。您只需编写一次扩展,其余时间仅调用API $(someradio).realVal(),则无需多次编写扩展。
alphakevin

您甚至不需要一次编写扩展名,不要介意“很多次”!Oo
Coz

8
$('input:checkbox:checked').val();        // get the value from a checked checkbox

7
<input type="checkbox" id="ans" value="1" />

jQuery: var test= $("#ans").is(':checked') 它返回true或false。

在您的职能:

$test =($request->get ( 'test' )== "true")? '1' : '0';



4
function chkb(bool){
if(bool)
return 1;
return 0;
}

var statusNum=chkb($("#ans").is(':checked'));

如果选中此复选框,则statusNum等于1;否则,则返回0。

编辑:您也可以将DOM添加到函数中。

function chkb(el){
if(el.is(':checked'))
return 1;
return 0;
}

var statusNum=chkb($("#ans"));

4

我最近遇到一种情况,当用户单击按钮时,我需要复选框的检查值。唯一正确的方法是使用prop()属性。

var ansValue = $("#ans").prop('checked') ? $("#ans").val() : 0;

在我的情况下这可行,也许有人会需要它。

当我尝试过.attr(':checked')它返回checked但我想要布尔值和.val()attribute的返回值value


4

有几种选择....

 1. $("#ans").is(':checked') 
 2. $("#ans:checked")
 3. $('input:checkbox:checked'); 

如果所有这些选项都返回true,则可以相应地设置值。


第一个应该是(':checked'),否则不起作用。
Arie Livshin

2

尝试这个

$('input:checkbox:checked').click(function(){
    var val=(this).val(); // it will get value from checked checkbox;
})

如果选中,则标志为true,否则为false

var flag=$('#ans').attr('checked');

再次,这将使

$('#ans').attr('checked',true);


0

您可以通过这两种方法获取值(对/错)

$("input[type='checkbox']").prop("checked");
$("input[type='checkbox']").is(":checked");

0

首先检查值被检查

$("#ans").find("checkbox").each(function(){
    if ($(this).prop('checked')==true){ 
    var id = $(this).val()
    }
});

否则设置0


0

如果要检查是否为整数值,请尝试:

$("#ans:checked").length

0

您可以通过以下方式执行:

$('input[id=ans]').is(':checked');     
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.