2013-04-05 47 views
0
<asp:CheckBoxList ID="chkList" runat="server" Enabled="false" > 
    <asp:ListItem Text="1" Value="1"></asp:ListItem> 
    <asp:ListItem Text="2" Value="2"></asp:ListItem> 
</asp:CheckBoxList> 

<asp:Button ID="btnFoo" runat="server" Text="Test" /> 

<script type="text/javascript" language="javascript"> 
    $(document).ready(function() { 
     $('#<% = btnFoo.ClientID %>').click(function() { 
      //var targetValue = 2; 
      var items = $('#<% = chkList.ClientID %> input:checkbox'); 
      for (var i = 0; i < items.length; i++) { 
       //alert(i); 
       //if (items[i].value == targetValue) { 
        items[i].checked = true; 
        // break; 
       //} 
      } 

      $('#<%= chkList.ClientID%>input:checkbox').removeAttr('disabled');             return false; 
     }) 
    }); 
</script> 

注意不工作:它工作在Chrome,FF不是在IE啓用的CheckBoxList在IE中,asp.net,jQuery的

它在IE8不wroking,這裏是下面的代碼。 它檢查所有複選框,但保持它們禁用,請解決任何問題嗎?

+1

呈現頁面的來源是什麼樣子?具體來說,複選框的列表? – tymeJV 2013-04-05 18:12:28

+0

<表ID = 「ctl00_cphMain_chkList」 禁用= 「禁用」 BORDER = 「0」> ​​ <跨度禁用= 「禁用」> <輸入的ID = 「ctl00_cphMain_chkList_0」 類型= 「複選框」 名稱=「ctl00 $ cphMain $ chkList $ 0" 禁用= 「禁用」/> <標籤= 「ctl00_cphMain_chkList_0」> 1 \t \t \t​​<跨度禁用= 「禁用」><輸入的ID = 「ctl00_cphMain_chkList_1」 type =「checkbox」name =「ctl00 $ cphMain $ chkList $ 1」禁用= 「禁用」/><標籤= 「ctl00_cphMain_chkList_1」> 2 \t \t \t – Avinash 2013-04-05 18:21:12

回答

1

嘗試使用prop屬性,而不是.checked

$("#btn").on("click",function(){ 
    $('input:checkbox').each(function(){ 
    $(this).prop("checked", "true"); 
    }); 
}); 

的jsfiddlehttp://jsfiddle.net/hxS7M/1/

編輯:這也將讓他們啓用。

$("#btn").on("click",function(){ 
    $('input:checkbox').each(function(){ 
    $(this).prop("checked", "true").prop("disabled",false); 
    }); 
}); 

的jsfiddlehttp://jsfiddle.net/hxS7M/4/

+0

對不起,請再見到我的問題: 它檢查所有的複選框,但仍會保留禁用,任何解決方案嗎? – Avinash 2013-04-05 18:30:48

0

試試這個:

$(document).ready(function() { 
    $('#btnFoo').click(function() { 
    $('#chkList input:checkbox').each(function(i,e) { 
     $(e).attr("checked", true);      
    }) 
    }); 
}) 

+0

應該將'attr()'改爲'prop()' – tymeJV 2013-04-05 18:30:44

+0

請檢查我的問題: 它檢查所有複選框,但保持它們禁用,請解決任何問題? – Avinash 2013-04-05 18:31:21

0

要啓用它們,這樣做

$('#<%= chkList.ClientID%>input:checkbox').prop('disabled', false); 
1

每個人的腳本都在正常的HTML頁面上工作。但是,您正在使用按鈕控件,並且它將回發到服務器,除非您明確地取消該事件。

checkAll返回false onclick事件,以便它不會回發到服務器。

enter image description here

<%@ Page Language="C#" AutoEventWireup="true" 
CodeBehind="WebForm7.aspx.cs" Inherits="WebApplication2010.WebForm7" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"> 
    </script> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     <asp:CheckBoxList ID="chkList" runat="server" Enabled="False"> 
      <asp:ListItem Text="1" Value="1"></asp:ListItem> 
      <asp:ListItem Text="2" Value="2"></asp:ListItem> 
     </asp:CheckBoxList> 
     <asp:Button ID="btnFoo" runat="server" Text="Test" 
      OnClientClick="return checkAll();" /> 
     <script type="text/javascript" language="javascript"> 
      function checkAll() { 
       $('#<% = chkList.ClientID %> :checkbox').each(function() { 
        $(this).prop("checked", "true").prop("disabled",false); 
       }); 
       return false; 
      } 
     </script> 
    </div> 
    </form> 
</body> 
</html> 

感謝@HanletEscaño。

+0

+1我忽略了提交按鈕。非常好。 – 2013-04-05 21:28:40