2013-03-25 65 views
0

我有一个面板激活/取消激活复选框(chk1)“开/关”。该面板包含一个复选框(chk2)和一个单选按钮(rbtn)。 当选中单选按钮(rbtn)时,必须禁用复选框。 当通过取消选中“开/关”复选框禁用面板时,单选按钮和复选框(chk2)被禁用。 问题是,当我打开启用面板的页面,从JavaScript执行的代码,但当我打开面板禁用的页面后,我启用面板的JavaScript doe不工作,当我检查单选按钮,以便chk2被禁用。Javascript代码不工作

$(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代码不再可用。

+0

您正在使用jQuery.Did导入jQuery文件 – PSR 2013-03-25 12:43:40

+0

究竟哪些方法无效?您是否收到错误或者您的代码是否按预期行事? – 2013-03-25 12:45:32

+0

没有错误出现,但我在函数SetControlEnableState中放置了警报消息,并且未显示消息。 – Ale 2013-03-25 12:47:16

回答

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

不要使用click事件上复选框但change一个:

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

这样你会得到新的状态。在之前生成click事件复选框已更改。

1

取而代之的是:

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

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

这样做:

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

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

简化了整个事情:

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

    function SetControlEnableState(controlToSet, control) { 
     controlToSet.prop('disabled', control.is(':checked')); 
    } 
}); 
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'); 
     } 
    } 
});