0

チェックボックス(chk1)「オン/オフ」でパネルをアクティブ化/非アクティブ化しています。このパネルには、チェックボックス (chk2) とラジオ ボタン (rbtn) が含まれています。ラジオ ボタン (rbtn) がチェックされている場合は、チェックボックスを無効にする必要があります。「オン/オフ」チェックボックスをオフにしてパネルを無効にすると、ラジオボタンとチェックボックス (chk2) が無効になります。問題は、パネルを有効にしてページを開くと javascript のコードが実行されるが、パネルを無効にしてページを開くと、パネルを有効にした後、ラジオ ボタンをチェックして chk2無効になりました。

 $(document).ready(function (){
     $('input[id^=rbtn]').click(function () {
         SetControlEnableState($('#chk2'), $('#rbtn'));
     });
     function SetControlEnableState(controlToSet, control) {
         if (control.is(':checked')) {
            $(controlToSet).attr('disabled', 'disabled');
            alert('if');
         }
         else {
            $(controlToSet).removeAttr('disabled');
            alert('else');
        }
     }
});

パネルが更新されると、JavaScript コードは使用できなくなります。

4

5 に答える 5

3

clickチェックボックスではイベントを使用しないでくださいchange

    $('input[id^=rbtn]').change(function () {

このようにして、新しい状態を取得します。チェックボックスが変更される前にイベントclickが生成されます。

于 2013-03-25T12:45:29.337 に答える
1

これの代わりに:

$(controlToSet).attr('disabled', 'disabled');

$(controlToSet).removeAttr('disabled');

これを行う:

$(controlToSet).prop('disabled', true);

$(controlToSet).prop('disabled', false);
于 2013-03-25T12:45:56.943 に答える
0

全体を単純化します。

 $(document).ready(function () {
     $('input[id^=rbtn]').change(function () {
         SetControlEnableState($('#chk2'), $('#rbtn'));
     });

     function SetControlEnableState(controlToSet, control) {
         controlToSet.prop('disabled', control.is(':checked'));
     }
 });
于 2013-03-25T12:52:24.723 に答える
0

これを試して

$(document).ready(function (){
    $('input[id^=rbtn]').click(function () {
        SetControlEnableState($('#chk2'), $(this));
    });
    function SetControlEnableState(controlToSet, control) {
        if (control.is(':checked')) {
            $(controlToSet).attr('disabled', 'disabled');
        } else {
            $(controlToSet).removeAttr('disabled');
        }
    }
});
于 2013-03-25T12:52:26.843 に答える
0
$(document).ready(function (){

            $('input[id^=rbtn]').change(function () {
                SetControlEnableState();
            });
    function SetControlEnableState() {
        if ($('#rbtn').is(':checked')) {
            $('#chk2').attr('disabled', 'disabled');
            alert('if');
        }
        else {
            $('#chk2').removeAttr('disabled');
            alert('else');
        }
    }
于 2013-03-25T12:45:22.570 に答える