Javascript阻止单选按钮工作

时间:2012-10-11 22:13:17

标签: javascript jquery html

我认为这很简单,但我无法弄清楚为什么#type2无法点击。

<input type="radio" id="type1" name="group1" checked>

<input type="radio" id="type2" name="group1">

<input type="text" class="type1">

<input type="text" class="type2" disabled>

<script>

function toggle() {
    if ($('#type1').attr('checked', true)) {
        $('.type1').attr('disabled', false);
        $('.type2').attr('disabled', true);
    }
    else if ($('#type2').attr('checked', true)) {
        $('.type1').attr('disabled', true);
        $('.type2').attr('disabled', false);
    }
}

$(document).ready(function() {
    toggle();
});

</script>

我看不出问题所在。任何帮助都会很棒,谢谢。

4 个答案:

答案 0 :(得分:2)

尝试:

function toggle() {
    if ($('#type1').is(':checked')) {
        $('.type1').attr('disabled', false);
        $('.type2').attr('disabled', true);
    }
    else if ($('#type2').is(':checked')) {
        $('.type1').attr('disabled', true);
        $('.type2').attr('disabled', false);
    }
}

示例: http://jsfiddle.net/andrewwhitaker/z5Wbv/1/

您使用的.attr版本是 #type1的{​​{1}}属性设置为true。您可以使用is:checked selector来确定是否选中了复选框/单选按钮。

答案 1 :(得分:2)

你使用的是.attr而不是.prop。

.attr用于属性,.prop用于属性。属性=已选中,已选中,已禁用。

文档:http://api.jquery.com/prop/

确定是否选中了复选框

if ( elem.checked )
if ( $(elem).prop("checked") )
if ( $(elem).is(":checked") )

答案 2 :(得分:0)

工作演示** http://jsfiddle.net/YUhFw/

很少有事情需要纠正:)

  • 检查是否使用.is(":checked")
  • 进行了检查
  • 将其附加到点击事件。
  • 相应地附加和分离disabled属性。

希望它适合原因:)

<强>码

function toggle() {
    if ($('#type1').is(':checked')) {
        $('.type1').removeAttr('disabled');
        $('.type2').attr('disabled', true);
    }
    else if ($('#type2').is(':checked')) {
        $('.type1').attr('disabled', true);
        $('.type2').removeAttr('disabled');
    }
}

$(document).ready(function() {
    $("input[type=radio]").click(function() {
        toggle();
    });
});​

答案 3 :(得分:0)

没有检查这里的条件。

设置 which is always true .. 试试这个

if ($('#type1').is(':checked')){

同样使用.prop()的<{1}} 代替,因为这不是属性,而是单选按钮的属性。 您的代码应如下所示

.attr()