1

假设check disable选中复选框并反转check disable另一个框。似乎可以工作,直到我在先前更改的复选框上再次尝试。今天的大脑是油炸的。非常感谢任何见解或更好的代码。

http://jsfiddle.net/sz7R4/

$('.changeCheck').change(function(event) { 
   var oldTarget = $(':checked').attr('id');
    console.log(oldTarget);
    $(this).attr('disabled', 'disabled').attr('checked', 'checked');
    $('#'+oldTarget).removeAttr('checked', 'checked').removeAttr('disabled', 'disabled');
});
4

3 回答 3

3

目前您只针对第二个输入,您还需要change在第一个输入上定位事件。以及您应该使用prop()而不是attr()

$('.changeCheck, #check1').change(function(event) { 
    $(this).prop("disabled", true).siblings().prop("disabled", false).prop('checked', false);
});

更新小提琴

于 2013-05-10T03:46:57.767 回答
2

尝试这个:

$('.changeCheck').change(function (event) {
    $('.changeCheck').prop({
        'checked': false,
        'disabled': false
    });
    $(this).prop({
        'checked': true,
        'disabled': true
    });
});

jsFiddle 示例

您不想使用.removeAttr()or .attr(),而是使用.prop(). 单选按钮在这里不是更好的选择吗?

于 2013-05-10T03:42:30.917 回答
0

.attr()仅更改默认属性,不会更改“live”属性(从 jQuery 1.6 开始)。您需要改用该.prop()方法。

于 2013-05-10T03:40:13.947 回答