即使已禁用,也会检查标记无线电

时间:2012-08-13 13:35:52

标签: jquery html

我正在尝试将单选按钮标记为click(),但如果禁用了广播,则该功能无效。

我该怎么办?

6 个答案:

答案 0 :(得分:3)

您想使用.prop()方法。 .attr()很难检测到跨浏览器的真实性

$('input:radio:disabled').prop('checked', true);

^这将自动检查任何已禁用的。

如果你希望它在某种点击事件等......你会这样做:

$('input:radio').prop('checked', true);

jsFiddle DEMO

答案 1 :(得分:1)

唯一的解决方案来自javascript / jquery - (jquery最简单的例子)

<input type="radio" id="test" name="test_name" disabled="disabled" />

$(document).ready(function() {
  $('#test').attr('checked', 'checked');      
});​

看到这个jsFiddle http://jsfiddle.net/7XevT/1/

答案 2 :(得分:0)

唯一可以做到这一点的方法是在单选按钮前放置一个元素(例如div)并检查其上的点击次数。

在禁用的元素上禁用鼠标事件(有充分理由......您已禁用它!)

然而,可能有更好的方法来做你想做的事。我无法想象有人点击禁用的单选按钮。另外,如果您想要一个可点击的单选按钮,那么请不要禁用它!

答案 3 :(得分:0)

click事件*是错误的使用方法。禁用的元素不会被单击(因为它们已被禁用),因此触发click事件没有任何好处。

<input type="radio" /><input type="checkbox" />元素具有checked属性,需要进行修改才能更改其已检查状态:

使用普通的JS:

<input id="r" type="radio" name="foo" value="bar" disabled />
<script type="text/javascript">
    document.getElementById('r').checked = true;
</script>

使用jQuery:

<input id="r" type="radio" name="foo" value="bar" disabled />
<script type="text/javascript">
    $('#r').prop('checked', true);
</script>

*或函数,无法判断您正在使用哪个。我假设它是jQuery.fn.click,它会触发一个事件。

答案 4 :(得分:0)

disabled输入不会触发click事件。一种hackish方式是用另一个元素包装一个收音机:

<span class='radio'><input type='radio' disabled/></span>

$('.radio').click(function(){
  var $input = $(this).find('input'); 
  $input.prop('checked', !$input.prop('checked'))
})

DEMO

但我不确定为什么输入应该是disabled当它的检查状态可以改变!!

答案 5 :(得分:0)

比赛迟到了,但是你可以添加一个可以放在单选按钮上的临时<span>,这会产生你点击它的效果:

$('input[disabled="disabled"]').each(function(){
    $(this).wrap('<span style="position:relative;"></span>')
        $(this).parent().append('<span class="disabled" style="left:0; top:0; position:absolute; display:block; width:100%; height:100%;">&nbsp;</span>');
})

$('.disabled').click(function(){
    $(this).prev().removeAttr('disabled').attr('checked', 'checked').attr('disabled', 'disabled').unwrap();
    $(this).remove();
})

查看小提琴 - http://jsfiddle.net/FTymF/

您还可以切换已禁用的单选按钮:

$('.disabled').click(function(){
    if($(this).prev().attr('checked'))
        $(this).prev().removeAttr('disabled').removeAttr('checked').attr('disabled', 'disabled');
    else
         $(this).prev().removeAttr('disabled').attr('checked','checked').attr('disabled', 'disabled');
})

查看小提琴 - http://jsfiddle.net/FTymF/1/