0

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 is checked 属性也始终为真。有没有什么办法解决这一问题?(或者更好的是,某种基于其他控件启用/禁用控件的 jquery 插件)。

4

3 回答 3

1

就单选按钮而言,没有这样的事情blur,唯一会导致取消选中单选按钮的情况是选中另一个。所以改变你blur是:

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

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

于 2012-05-04T16:55:13.837 回答
0

要根据无线电选择切换复选框:

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

    $('input[type="radio"]').click(function(){
        $checkbox.prop('disabled', !$rad1.is(':checked'));
    });
});​
于 2012-05-04T16:50:46.573 回答
0

我知道您已经选择了一个答案,但是根据您的评论,“选择 rad1 时,应启用 chk1。选择 rad2 时,应禁用 chk1。” 以下将按照您所说的进行:

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

jsFiddle 示例

于 2012-05-04T17:02:20.190 回答