Javascript代码不起作用

时间:2013-03-25 12:42:20

标签: javascript jquery

我通过复选框(chk1)'开/关'激活/取消激活面板。该面板包含一个复选框(chk2)和一个单选按钮(rbtn)。 选中单选按钮(rbtn)时,必须禁用该复选框。 通过取消选中“开/关”复选框禁用面板时,单选按钮和复选框(chk2)将被禁用。 问题是,当我打开启用了面板的页面时,会执行来自javascript的代码,但是当我打开禁用面板的页面时,在我启用面板后,当我检查单选按钮时,javascript doe不起作用,以便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代码不再可用。

5 个答案:

答案 0 :(得分:3)

请勿在{{1​​}}一个复选框上使用click事件:

change

这样你就可以得到新的状态。在复选框更改之前,生成了 $('input[id^=rbtn]').change(function () { 事件。

答案 1 :(得分:1)

而不是:

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

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

这样做:

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

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

答案 2 :(得分: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');
        }
    }

答案 3 :(得分:0)

简化整个事情:

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

     function SetControlEnableState(controlToSet, control) {
         controlToSet.prop('disabled', control.is(':checked'));
     }
 });

答案 4 :(得分: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');
        }
    }
});