2013-03-25 121 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'); 
     } 
    } 
});