如果复选框被选中,那么我只需要得到值为1;否则,我需要得到它为0。我如何使用jQuery做到这一点?

$("#ans").val()在这种情况下总是会给我一个right:

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

当前回答

我以前也发现过同样的问题 希望这个解决方案能帮助到你。 首先,在复选框中添加一个自定义属性:

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

你可以在这里测试

其他回答

我以前也发现过同样的问题 希望这个解决方案能帮助到你。 首先,在复选框中添加一个自定义属性:

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

你可以在这里测试

我最近经历了一个案例,当用户单击按钮时,我需要检查复选框的值。唯一正确的方法是使用prop()属性。

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

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

当我尝试了.attr(':checked'),它返回checked,但我想要布尔值和.val()返回属性值的值。

你可以这样执行:

$('input[id=ans]').is(':checked');     

你还可以使用:

$("#ans:checked").length == 1;
$("#ans").attr('checked') 

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

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

对于每个注释,在可用时使用prop而不是attr。例句:

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