【问题标题】:Only one checkbox checked in repeater中继器中仅选中一个复选框
【发布时间】:2016-09-21 08:27:21
【问题描述】:

我有一个中继器,每个项目都有 1 个复选框。我只想一次检查一个。

复选框是asp:checkbox,不知道有没有什么区别。 我尝试了一些 jquery,但它似乎不起作用。

 <asp:Repeater runat="server" DataSourceID="SqlDataSource1" ID="repeater1">
  <ItemTemplate>
  <asp:CheckBox ID="CheckBox1" runat="server" OnCheckedChanged="CheckBox1_CheckedChanged" Checked='<%# Eval("carousel_check")%>'/>
 </ItemTemplate>
 </asp:Repeater>

我试图给复选框一个 cssclass (checked_button) 然后这个脚本。

    $(document).ready(function () {
        $('.checked_button').change(function () {
            if ($(this).is(':checked')) {
                $('.radio-similar').not(this).removeAttr('checked');
            };
        });
    });

【问题讨论】:

  • 我们需要看一些代码。什么条件决定是否应选中复选框?请记住,在提供代码时,只需提供足以说明和复制问题的内容。
  • 我编辑了我的问题,希望对您有帮助:)
  • 您可能还想考虑使用单选按钮。从 UX 的角度来看,用户希望能够看到多个复选框。单选按钮还支持您正在寻找的行为,无需 javascript 干预。

标签: c# asp.net checkbox


【解决方案1】:

ASP.Net Checkbox 在 span 标签内呈现。

<span class="checked_button">
   <input id="MainContent_Repeater1_CheckBox1_2" 
     type="checkbox" name="ctl00$MainContent$Repeater1$ctl02$CheckBox1">
</span>

所以选择器应该是.checked_button input。然后取消选中所有复选框,只选中触发点击事件的复选框。

$(function() {
    $(".checked_button input").click(function () {
        $('.checked_button input').attr("checked", false);
        $(this).prop("checked", true);
     });
});

【讨论】:

  • 也许我看起来有点傻,但是我应该把 asp:checkbox 放在 span 标签里面吗?
  • 好吧,你把你的脚本换成我的就行了。
  • 谢谢。但我不明白你对点击事件的意思。你能解释更多吗?
  • 在 jQuery 中,您想使用 click 事件 (not change) 来捕获复选框的选中/取消选中事件。
猜你喜欢
  • 2014-11-30
  • 2023-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-13
  • 1970-01-01
  • 1970-01-01
  • 2012-07-18
相关资源
最近更新 更多