2015-09-25 59 views
0

我有這套javascript代碼,允許我根據自己的選擇禁用/啓用複選框。如何在回發時保留禁用的複選框?

下面的第一組代碼允許我將默認設置爲「全選」,並在第一次加載頁面時選中「全選」而不是在回發時禁用其餘選項。之所以不回覆是因爲,例如,如果用戶沒有選中checkboxlist2中的任何複選框,我想提示用戶選中checkboxlist 2中的至少一個複選框,但不希望先覆蓋用戶選擇在回發時使用checkboxlist1和checkboxlist2中的默認「全選」。

$(function() { 
    if($("#hidden").val() == "") 
    { 
     $("#Checkboxlist1 :checkbox").attr('disabled', 'disabled'); 
     $("#Checkboxlist1 :checkbox[value='Select All']").removeAttr('disabled'); 
     $("#Checkboxlist1 :checkbox[value='Select All']").prop("checked", true); 
     $("#Checkboxlist2 :checkbox").attr('disabled', 'disabled'); 
     $("#Checkboxlist2 :checkbox[value='Select All']").removeAttr('disabled'); 
     $("#Checkboxlist2 :checkbox[value='Select All']").prop("checked", true); 
     $("#hidden").val("set"); 
    } 
}); 

$(function() { 
    $("#Checkboxlist2 :checkbox").change(function() { 
      var ischecked = $(this).is(":checked"); 
      var val = $(this).val(); 
      //alert(val); 
      if (val == "Select All") { 
       if (ischecked) { 
        $("#Checkboxlist2 :checkbox").attr('disabled', 'disabled'); 
        $(this).removeAttr('disabled'); 
        $("#Checkboxlist2 :checkbox").prop("checked", false); 
        $(this).prop("checked", true); 

        return; 
       } else { 
        $("#Checkboxlist2 :checkbox").removeAttr('disabled'); 
        return; 

我的問題是:

在回傳我的校驗值,但保留以前禁用的複選框被啓用讓我怎麼回發後保持其整體的狀態?

我使我的CheckBoxList的EnableViewState =真

+0

您使用更新潘內爾工作嗎? – Webruster

+0

不,我沒有使用更新面板 –

回答

0

我不知道你在哪裏設置$("#hidden")這個值設置爲空。 但如果您的checkbox更改事件旨在設置所有checkboxdisabled狀態,請在該事件處理程序之後立即調用change事件中的trigger方法。 就是這樣。

$("#Checkboxlist2 :checkbox").trigger('change'); 

這樣

$("#Checkboxlist2 :checkbox").change(function() { 
var ischecked = $(this).is(":checked"); 
var val = $(this).val(); 
//alert(val); 
    if (val == "Select All") { 
    if (ischecked) { 
     $("#Checkboxlist2 :checkbox").attr('disabled', 'disabled'); 
     $(this).removeAttr('disabled'); 
     $("#Checkboxlist2 :checkbox").prop("checked", false); 
     $(this).prop("checked", true); 

     return; 
    } else { 
     $("#Checkboxlist2 :checkbox").removeAttr('disabled'); 
     return; 
    } 
    } 
}); 
$("#Checkboxlist2 :checkbox").trigger('change'); 
+0

緊跟事件處理程序之後? –

0

只是試圖把一個標誌的document.ready function..It可以

相關問題