2009-01-29 143 views
0

說我們有簡單的asp.net轉發器, 在一行中我們有一個複選框,一個標籤(記錄的數據庫ID)和不可見(用於回發)和一個文本(在一個tabelcell中)複選框選擇/取消選擇中繼器時點擊文本

現在我想讓它像在windows中一樣,如果你點擊文本,應該選擇或取消選擇複選框。

有人爲此鏈接或解決方案,也許已經與jQuery?

編輯:正如我所說,它是一個asp.repeater。並且該表用於佈局,所以使用checkbox.text屬性是不可設計的(例如換行) 複選框和文本的ID在渲染中繼器時動態添加/更改。因此標籤解決方案也沒有真正的工作。

回答

8

假設你wont't需要jQuery和表,構建

<asp:Repeater runat="server"> 
    <ItemTemplate> 
     <asp:CheckBox runat="server" Text="your text" /> 
    </ItemTemplate> 
</asp:Repeater> 

這使得基本上是由裏卡多·維加 無論你在複選框的屬性文本得到的是點擊,並檢查/提供的解決方案取消選中該複選框...爲此你應該使用<%#的eval( 「...」)%> 可以皮膚(通過CSS)的標籤

編輯的保證金:

再次思考之後,還有另一種解決方案:

<asp:Repeater runat="server"> 
    <HeaderTemplate> 
     <table> 
    </HeaderTemplate> 
    <ItemTemplate> 
     <tr> 
      <td><asp:Checkbox runat="server" ID="checkbox" /></td> 
      <td><asp:Label runat="server" AssociatedControlID="checkbox">Your text</asp:Label></td> 
     </tr> 
    </ItemTemplate> 
    <FooterTemplate> 
     </table> 
    </FooterTemplate> 
</asp:Repeater> 

提示:您可以使用ASP的Text屬性:標籤的元素或者!

+0

好的答案,抱歉回答沒有ASP知識。也許最好使用最簡單的方法,而不是增加一層複雜性。 – 2009-01-29 11:43:11

+0

Sooooooo很高興我不用ASP工作;)但是+1不用JavaScript。 – roborourke 2009-01-29 11:56:17

0

這樣的事情呢?

$('.yourtableclass td').click(function(e) { 
    var cb = $(this).children('input[type=checkbox]').get(0); 
    cb.checked = !cb.checked; 
}); 
4

也許我不完全理解,但你爲什麼不在標籤標籤中使用html屬性「for」?

像:

<label for="field_id">Checkbox 1</label> 
<input id="field_id" type="checkbox" /> 

,這將讓該複選框充當點擊,如果點擊該標籤。所以你不必依賴JS來做到這一點。

編輯: 如果你真的真的想使用jQuery這個:

$('td').click(function(){ 
    $(':checkbox',this).attr('checked',!$(':checkbox',this).attr('checked')); 
}); 

更改 'TD' 需要。

+0

也許複選框需要是一個asp控件才能獲得檢查狀態。因此clientid會動態呈現,不能在itemtemplate裏面用於標籤 – 2009-01-29 11:22:27

1

如果你使用其中一個jQuery點擊解決方案,請確保忽略由複選框本身觸發的點擊事件。

$('td').click(function(e){ 
    if (!$(e.target).is(':checkbox')) { // toggle only on non-checkbox click 
     var checked = $(':checkbox', this).attr('checked'); 
     $(':checkbox', this).attr('checked', !checked); // toggle 
    } 
});