2010-01-08 103 views
0

我有一箇中繼器,裏面放置了一個複選框,上面有一個複選框,用於檢查/取消選中複選框,使用客戶端JavaScript 。 這裏是我的代碼: JavaScript來選擇/取消:如何獲取複選框內的複選框的標識

<script type="text/javascript"> 
    function selectAll() { 

     for (i = 0; i < document.all.length; i++) { 
      alert("Working"); 
      if (document.all[i].type == 'checkbox') { 
       if (document.getElementById(cbSelectAll).Checked = true) { 
        //document.all[i].Checked = false; 
       } else { 
        document.all[i].Checked = true; 
       } 
      } 
     } 
    } 
</script> 

HTML代碼中繼器:

<div id="hdPropertyList" runat="server"> 
    <table border="0" cellpadding="0" cellspacing="0" class="navigation" width="100%"> 
     <tr> 
      <td> 
       <input type="checkbox" id="cbSelectAll" onchange="selectAll()" /> 
       <asp:Button runat="server" ID="btnContactAll" Text="Contact All" /> 
      </td> 
      <td id="tdOrderBy" runat="server"> 
      </td> 
      <td> 
       <asp:Label ID="lblPage" runat="server" CssClass="pageList"></asp:Label> 
      </td> 
     </tr> 
    </table> 
</div> 
<div class="boxleft SearchFeaturedlist" style="display: none"> 
    <h2> 
     Featured Properties</h2> 
</div> 
<asp:Repeater ID="rptPropertyList" runat="server" EnableViewState="false" OnItemDataBound="rptPropertyList_ItemDataBound" 
    OnLoad="rptPropertyList_Load"> 
    <ItemTemplate> 
     <table id="propertyTable" runat="server" enableviewstate="false"> 
      <tr id="tbrLabel" runat="server" enableviewstate="false"> 
       <td id="tbcLabel" colspan="3" runat="server" enableviewstate="false"> 
       </td> 
      </tr> 
      <tr id="tbrTitle" runat="server" enableviewstate="false"> 
       <td id="tbcTitle" runat="server" enableviewstate="false"> 
        <asp:CheckBox ID="ChkSelect" runat="server" /><span id="spnSelect" runat="server"></span> 
       </td> 
      </tr> 
     </table> 
     <div id="divAds" runat="server" visible="false" enableviewstate="false" style="width: 100%; 
      overflow: hidden"> 
     </div> 
    </ItemTemplate> 
</asp:Repeater> 

請幫我在這方面。 在此先感謝。

+0

你的'if'表達式中有一個錯字:'document.getElementById(cbSelectAll).Checked = true'應該是==而不是'='。或者更好的是,只需使用'.Checked'而不是比較'true'。 – 2012-09-06 14:51:06

回答

1

我使用jQuery的答案。我只使用HTML複選框來檢查取消選中我的Asp.net頁面上的所有複選框。

<script type="text/javascript"> 
$(document).ready(function() { 
    $('td.title_listing :checkbox').change(function() { 
     $('#cbSelectAll').attr('checked', false); 
    }); 
}); 
function CotactSelected() { 
    var n = $("td.title_listing input:checked"); 
    alert(n.length); 
    var s = ""; 
    n.each(function() { 
     s += $(this).val() + ","; 
    }); 
    window.location = "/D_ContactSeller.aspx?property=" + s; 
    alert(s); 
} 

感謝 「保羅艾倫·泰勒」 爲您指導。

2

中繼器的ID將通過它的ClientID屬性可用。

真的,你想問你是否需要這個。爲什麼不把中繼器放置在一個命名的div中,然後只需找到所有的輸入元素,其複選框位於其中(getElementsByTagName將在這裏幫助)。

有了一個體面的js插件庫,如mootools或jQuery,你將能夠使用CSS選擇器,這將使你的任務更容易。

這裏是MooTools的例子: -

function selectAllOrNone() 
{ 
    var myNewValue = $('selectall').innerText == "All" ? "None" : "All"; 
    var myCheckers = $$('input[type=checkbox]'); 

    $('selectall').innerText = myNewValue; 

    myCheckers.each(
     function(e) { 
      e.checked = (myNewValue == "None"); 
     } 
    ); 
}