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を持っているので、存在しない間違った属性で入力をターゲットにしようとしています。また、ラジオボタンが変更されたら、入力のステータスを変更するイベントハンドラーがありません。ライブフィドルを参照してください。

また、入力を無効として開始することをお勧めします。

これがイベントハンドラーです

$('#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

関数はバインドされて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 に答える
1

再度有効にするには、次を使用します。

$("#AF92").removeAttr("disabled")
于 2012-09-27T12:40:18.883 に答える
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 に答える
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 に答える
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ボタンを探しています。IDを持っているので、それをセレクターとして使用します。nameGRP010$('#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 に答える