0

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

<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"); 
    }
});

但是,如果我选择单选按钮,文本字段将被禁用且未启用。我该如何做到这一点?谢谢

4

8 回答 8

2

没有属性称为enabled它只是禁用,使用它来做到这一点

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

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

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

这是事件处理程序

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

    if(checked && value2 == '900')
        $("#AF92").removeAttr("disabled");
    else
        $("#AF92").attr("disabled","disabled");
})
于 2012-09-27T12:40:08.037 回答
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);

    }

});
于 2012-09-27T12:56:32.647 回答
1

要再次启用它,请使用:

$("#AF92").removeAttr("disabled")
于 2012-09-27T12:40:18.883 回答
1

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

里面的文件准备写。

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

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

于 2012-09-27T12:41:38.613 回答
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");
    });
});
于 2012-09-27T12:48:21.667 回答
0

您正在使用的选择器正在寻找一个radio具有name属性的按钮GRP010- 它没有。由于您有 ID,只需将其用作选择器:$('#GRP010')

于 2012-09-27T12:49:28.267 回答
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/

于 2012-09-27T12:54:44.783 回答
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"); 

        }

}

它对你有用。

于 2012-09-27T12:46:43.540 回答