即使我的单选按钮被选中,该字段也不会启用

时间:2012-09-27 12:37:50

标签: jquery

我必须使用元素单选按钮和文本字段:

<label><input id="GRP010" type="RADIO" value ="900">Radio button</label>
    <input id="AF92" maxlength="254" size="15" name="AF92">

我想使用jquery来禁用文本字段,但是在选中单选按钮并且值相等时启用它。

到目前为止,我写了这个:

$(document).ready(function(){

    var value2 = $('input:radio[name="GRP010"]').val();
    var checked2 = $('input:radio[name="GRP010"]').is(':checked');

    if (checked2 == true && value2 == '900') {
        $("#AF92").attr("enabled", "enabled");
    } else {
        $("#AF92").attr("disabled", "disabled"); 
    }
});

但是,如果选择单选按钮,文本字段将被禁用并且不会启用。我怎么做到这一点?感谢

8 个答案:

答案 0 :(得分:2)

没有名为enabled的属性仅被禁用,使用它执行此操作

$("#AF92").attr("disabled","disabled"); // will disable
$("#AF92").removeAttr("disabled"); // to enable

您还有其他问题。首先,您尝试使用不存在的错误属性name="GRP010来定位您的输入,因为您有一个ID只是使用它。此外,单选按钮更改后,您没有事件处理程序来更改输入的状态,请参阅实时fiddle

此外,最好将输入启动为禁用。

这是事件处理程序

$('#GRP010').on('change', function(){
var checked = this.checked;

    if(checked && value2 == '900')
        $("#AF92").removeAttr("disabled");
    else
        $("#AF92").attr("disabled","disabled");
})

答案 1 :(得分:1)

要再次启用它,请使用:

$("#AF92").removeAttr("disabled")

答案 2 :(得分:1)

该函数绑定到ready,因此仅在启动时进行检查。您需要在单击单选按钮时绑定以再次检查以启用禁用。

内部文件准备写。

$(".radioclass").click(function(){
    if ($('#GRP010').val()) { //you actually don't need double check
        $("#AF92").removeAttr("disabled");
    } else {
       $("#AF92").attr("disabled",true);
    }
});

radioclass为所有单选按钮提供公共类,或者为这些单选按钮使用您首选的选择器。

答案 3 :(得分:1)

使用

$(document).ready(function(){
    var value2 = $("#GRP010").val();
    var checked2 = $("#GRP010").is(':checked');

if (checked2 == true && value2 == '900')
   {
     $("#AF92").attr('readonly', false);
   }
else {
        $("#AF92").attr('readonly', true);

    }

});

答案 4 :(得分:0)

你应该处理单选按钮更改事件

$("#GRP010").bind('change', handler);

function handler(){
  var value2 = $('input:radio[name="GRP010"]').val();
        var checked2 = $('input:radio[name="GRP010"]').is(':checked');

 if (checked2 == true && value2 == '900')
       {
         $("#AF92").attr("enabled","enabled");
       }
 else {
            $("#AF92").removeAttr("disabled"); 

        }

}

它适合你。

答案 5 :(得分:0)

使用此

<label><input id="GRP010" type="checkbox" value ="900">CheckBox</label>
<input id="AF92" maxlength="254" size="15" name="AF92">

和Jquery

$(document).ready(function(){
    $('#GRP010').on('change', function(){
        if($('#GRP010').is(':checked') && $('#GRP010').val()== '900')
            $("#AF92").removeAttr("disabled");
        else  
            $("#AF92").attr("disabled","disabled");
    });
});

答案 6 :(得分:0)

您正在使用的选择器正在寻找radio属性为name的{​​{1}}按钮 - 它没有。{1}}。由于您拥有ID,因此只需将其用作选择器:GRP010

答案 7 :(得分:0)

从1.6开始,您可以使用.prop()

$(function(){
    var radio = $('#GRP010'),
        txtInput = $('#AF92');

    var changeState = function()
    {
        txtInput.prop("disabled", radio.is(':checked') && radio.val() == '900');
    };
    changeState ();

    radio.change(changeState);
});

演示:http://jsfiddle.net/TqXE9/