如何只为Checkbox列表实现一个复选框选中的功能?

时间:2014-03-19 07:12:27

标签: javascript jquery asp.net

如何仅使用java脚本实现从复选框列表中选择的一个复选框。

这是脚本:

<script language="javascript" type="text/javascript">
var previousCheckId;
     function toggle(chkBox) {
         if (chkBox.checked) {
              if (previousCheckId) {
                   document.getElementById(previousCheckId).checked = false;
              }
              previousCheckId = chkBox.getAttribute('id');
         }
     }
</script>

这是我的设计:

<tr>
    <td class="BlackTextBold" align="right" height="25" width="32%"><div align="left"><strong>
        Product :</strong><span class="top-txt"><span style="font-size: 12.0pt; font-family: Tahoma,sans-serif; color: red">*</span></span></div></td>
    <td height="20" width="68%">
         <asp:CheckBoxList ID="chkLst" runat="server" Font-Bold="True" 
             RepeatDirection="Horizontal" Width="50%">
             <asp:ListItem onClick="toggle(this);" Value="EasyOFFICE">EasyOFFICE</asp:ListItem>
             <asp:ListItem onClick="toggle(this);" Value="EasyVAT">EasyVAT</asp:ListItem>
         </asp:CheckBoxList>
     </td>
  </tr>
  <tr>
    <td class="BlackTextBold" align="right" height="25" width="32%"><div align="left"><strong>
        PC Type :</strong><span class="top-txt"><span style="font-size: 12.0pt; font-family: Tahoma,sans-serif; color: red">*</span></span></div></td>
    <td height="20" width="68%">
         <asp:CheckBoxList ID="chkLst" runat="server" Font-Bold="True" 
             RepeatDirection="Horizontal" Width="30%">
             <asp:ListItem onClick="toggle(this);" Value="Server">Server</asp:ListItem>
             <asp:ListItem onClick="toggle(this);" Value="LAN">LAN</asp:ListItem>
         </asp:CheckBoxList>
     </td>
  </tr>

然而,这个脚本适用于One CheckBox列表,但是当我只想要与其他CheckBox List相同的东西时,它可以使用4个。

3 个答案:

答案 0 :(得分:1)

复选框意味着可以进行多项选择。如果您只想允许一个选择,请使用RadioButtonList控件:http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.radiobuttonlist%28v=vs.110%29.aspx

答案 1 :(得分:0)

这是无线电盒的用途......

但是如果你想继续使用复选框,基于jQuery的解决方案可以只定位同一td

内的已选中复选框
function toggle(chkBox) {
    if (chkBox.checked) {
        $(this).closest('td').find('input[type="checkbox"]:checked').not(this).prop('checked', false)
    }
}

答案 2 :(得分:0)

首先,代码将无法编译,因为您具有相同的CheckBoxList名称。 更改第二个复选框列表的名称,然后尝试运行脚本,因为脚本没有问题。

<tr>
<td class="BlackTextBold" align="right" height="25" width="32%"><div align="left"><strong>
    Product :</strong><span class="top-txt"><span style="font-size: 12.0pt; font-family: Tahoma,sans-serif; color: red">*</span></span></div></td>
<td height="20" width="68%">
     <asp:CheckBoxList ID="chkLst" runat="server" Font-Bold="True" 
         RepeatDirection="Horizontal" Width="50%">
         <asp:ListItem onClick="toggle(this);" Value="EasyOFFICE">EasyOFFICE</asp:ListItem>
         <asp:ListItem onClick="toggle(this);" Value="EasyVAT">EasyVAT</asp:ListItem>
     </asp:CheckBoxList>
 </td>
 </tr>
  <tr>
<td class="BlackTextBold" align="right" height="25" width="32%"><div align="left"><strong>
    PC Type :</strong><span class="top-txt"><span style="font-size: 12.0pt; font-family: Tahoma,sans-serif; color: red">*</span></span></div></td>
<td height="20" width="68%">
     <asp:CheckBoxList ID="chkLst1" runat="server" Font-Bold="True" 
         RepeatDirection="Horizontal" Width="30%">
         <asp:ListItem onClick="toggle(this);" Value="Server">Server</asp:ListItem>
         <asp:ListItem onClick="toggle(this);" Value="LAN">LAN</asp:ListItem>
     </asp:CheckBoxList>
 </td>