2008-10-16 50 views
0

我有一個複選框列表控制我的asp.net web窗體,我動態從arraylist填充。在JavaScript中,我希望能夠遍歷列表中的值,並且如果選擇了某個特定的值來顯示頁面上的其他控件。在Web中的Webform複選框值

我的問題是,複選框列表中的所有值都顯示爲'on'而不是實際值集。我如何獲得每個複選框的實際值?

謝謝。

使用Javascript:

checkBoxs=document.getElementById(CheckboxList); 
    var options=checkBoxs.getElementsByTagName('input');  

    for(var i=0;i<options.length;i++) 
    {    
     if(options[i].value=="Other") 
     { 
      if(options[i].checked) 
      { 
       var otherPub=document.getElementById('<%=alsOtherPublicity.ClientID%>'); 
       otherPub.style.display='block'; 

      }     
     } 

    } 

編輯:說我有問題的線路是如果(項[I]。價值== 「其他」),其表示向上螢火的值給出作爲'開'而不是我設定的價值。

編輯2:即是HTML產生看起來像:

<span id="ctl00_ContentPlaceHolderMetadata_Allocation1_alfPublicity" class="ucFieldCBL" onChange="alValidate();" onClick="alPublicity('ctl00_ContentPlaceHolderMetadata_Allocation1_alfPublicity');"> 
    <input id="ctl00_ContentPlaceHolderMetadata_Allocation1_alfPublicity_0" type="checkbox" name="ctl00$ContentPlaceHolderMetadata$Allocation1$alfPublicity$0"/> 
    <label for="ctl00_ContentPlaceHolderMetadata_Allocation1_alfPublicity_0">Text1</label> 
    <input id="ctl00_ContentPlaceHolderMetadata_Allocation1_alfPublicity_1" type="checkbox" name="ctl00$ContentPlaceHolderMetadata$Allocation1$alfPublicity$1"/> 
    <label for="ctl00_ContentPlaceHolderMetadata_Allocation1_alfPublicity_1">Text2</label> 
    <input id="ctl00_ContentPlaceHolderMetadata_Allocation1_alfPublicity_2" type="checkbox" name="ctl00$ContentPlaceHolderMetadata$Allocation1$alfPublicity$2"/> 
    <label for="ctl00_ContentPlaceHolderMetadata_Allocation1_alfPublicity_2">Text3</label> 
    <input id="ctl00_ContentPlaceHolderMetadata_Allocation1_alfPublicity_3" type="checkbox" name="ctl00$ContentPlaceHolderMetadata$Allocation1$alfPublicity$3"/> 
    <label for="ctl00_ContentPlaceHolderMetadata_Allocation1_alfPublicity_3">Text4</label> 
    <input id="ctl00_ContentPlaceHolderMetadata_Allocation1_alfPublicity_4" type="checkbox" name="ctl00$ContentPlaceHolderMetadata$Allocation1$alfPublicity$4"/> 
    <label for="ctl00_ContentPlaceHolderMetadata_Allocation1_alfPublicity_4">Text5</label> 
</span> 

看起來,通過Dave Parslow描述該問題是否從缺少值的莖屬性可在asp.net複選框控制。我目前正在嘗試通過調用函數服務器端來返回複選框的文本並使用它來代替。

+0

你可以提供我們的HTML嗎? – 2008-10-16 13:30:06

回答

0

我意識到之前玩了很多預渲染事件,我實際上並不需要知道複選框的確切值作爲arraylist值與複選框的順序相同。我通過數組列表搜索以獲取所需值的位置,然後在複選框列表中使用該位置。

這聽起來有點煩躁,我不知道它是否適用於所有人,但我想我會在這裏把它放在這裏,因爲有一天它會幫助別人。

感謝您的幫助。

3

options[i].checked將返回true或false。 options[i].value將爲您提供複選框標記的值屬性。

0

我認爲你的問題不是用javascript,而是用填充複選框的代碼。您是將ArrayList綁定爲CheckBoxList數據源還是迭代ArrayList並將新的ListItems添加到CheckBoxList。如果前者考慮切換到後者,並確保使用帶有文本和值參數的ListItem構造函數。如果您查看HTML源代碼,我懷疑您會看到生成的代碼將value參數設置爲打開所有複選框,這意味着這些值實際上並未在代碼隱藏中綁定。

0

這裏不是100%適用,但請注意,如果您給複選框添加一個cssclass,它將得到一個跨度,並將該類放置在該範圍上。這會導致各種各樣的跨瀏覽器問題,當你瀏覽的DOM,或禁用複選框