繁体   English   中英

单击文本时选中/取消选中中继器中的复选框

[英]checkbox select/deselect in repeater when click on text

说我们有一个简单的asp.net中继器,连续有一个复选框,一个标签(记录的数据库ID),不可见(用于回发),一个文本(在Tabelcell中)

现在我想使其在Windows中像它一样,如果单击文本,则应选中或取消选中该复选框。

是否有人为此提供了链接或解决方案,也许已经在jQuery中了?

编辑:正如我所说,这是一个asp.repeater。 表格是用于布局的,因此无法使用checkbox.text属性(例如,换行),在呈现中继器时会动态添加/更改复选框和文本的ID。 因此,标签解决方案也无法真正起作用。

假设您不需要jQuery和table-construct

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

这基本上呈现了Ricardo Vega提供的解决方案,无论您在复选框的属性文本中得到的内容都是可单击的,然后选中/取消选中该复选框...因此,您应该使用<%#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:Label-Element的Text属性!

也许我不太了解,但是为什么不在标签标签中使用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”。

如果使用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
    }
});

这样的事情怎么样?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM