单选按钮模糊事件始终检查

时间:2012-05-04 16:43:12

标签: jquery

JSFiddle:http://jsfiddle.net/dvF5d/2/

<input type="radio" id="rad1" name="rad"/><label for="rad1">rad1</label><br/>
<input type="checkbox" id="chk1"/><label for="chk1">chk1</label><br/>
<input type="radio" id="rad2" name="rad"/><label for="rad2">rad2</label>

 $(document).ready(function(){
  var rad1 = $('#rad1');
  var chk1 = $('#chk1');
    var a =  function(){
        if(!rad1.is(':checked'))
        {
           chk1.attr('disabled', true);
        }
        console.log('rad checked', rad1.is(':checked'));
    };
    rad1.blur(function(){
        console.log('blur');
         a();     
    });
    rad1.change(function(){
        console.log('change');
        a();
    });
});

当rad1模糊时,即使选择了rad2,rad1也会被检查属性始终为true。有没有什么办法解决这一问题? (或者更好的是,某种jquery插件可以启用/禁用基于其他控件的控件)。

3 个答案:

答案 0 :(得分:1)

就单选按钮而言,没有blur这样的东西,唯一会导致取消选中单选按钮的情况是检查另一个。因此,请将blur更改为:

$("input[type='radio']:not(#rad1)").change(function(){
    //rad1 isn't checked
});

演示:http://jsfiddle.net/dvF5d/4/

答案 1 :(得分:0)

根据电台选择切换复选框:

jQuery(function(){
    var $rad1 = $('#rad1');
    var $checkbox = $('#chk1');

    $('input[type="radio"]').click(function(){
        $checkbox.prop('disabled', !$rad1.is(':checked'));
    });
});​

答案 2 :(得分:0)

我知道你已经选择了答案,但是根据你的评论,“当选择rad1时,应该启用chk1。当选择rad2时,应该禁用chk1。”以下是你所说的:

​$('input[name="rad"]').change(function(){
    $('#chk1').attr('disabled',$('#rad2').is(':checked'));
});​​​​​​​​​​​​​

<强> jsFiddle example