Javascript 单选按钮再次单击时清除检查

Javascript 单选按钮再次单击时清除检查,javascript,radio-button,Javascript,Radio Button,我有一组三个单选按钮,它们相互排斥,因为我实现了group name属性,但问题是,在初始阶段,没有选择任何单选按钮 但是当我选择任何一个单选按钮时,我不能取消选择相同的按钮,尽管互斥正在进行中,但我希望他们也取消选择 我的aspx代码是: <td> <asp:RadioButton ID="AChk" runat="server" CssClass="itemRightAlign" GroupName="A"/> </td> <td> <

我有一组三个单选按钮,它们相互排斥,因为我实现了group name属性,但问题是,在初始阶段,没有选择任何单选按钮

但是当我选择任何一个单选按钮时,我不能取消选择相同的按钮,尽管互斥正在进行中,但我希望他们也取消选择

我的aspx代码是:

<td>
<asp:RadioButton ID="AChk" runat="server" CssClass="itemRightAlign" GroupName="A"/>
</td>
<td>
<asp:RadioButton ID="DChk" runat="server" CssClass="itemRightAlign" GroupName="A"/>
</td>
<td>
<asp:RadioButton ID="WChk" runat="server" CssClass="itemRightAlign" GroupName="A"/>
</td>

您既有代码问题,也有误解

误解是关于互斥单选按钮如何工作(或应该如何工作)(或用户期望如何工作)

代码问题在于,在互斥单选按钮组中,您需要首先选择其中一个按钮

因此,我认为有两种方法可以解决这个问题:

  • 保持单选按钮接地。向集合中添加一个“无”按钮,使其工作时与未选择其他三个按钮一样。并首先选择此“无”按钮

  • 将单选按钮更改为复选框,以便用户可以选择和取消选择每个单选按钮。然后实现您自己的排除逻辑。我不推荐这个


  • 您既有代码问题,也有误解

    误解是关于互斥单选按钮如何工作(或应该如何工作)(或用户期望如何工作)

    代码问题在于,在互斥单选按钮组中,您需要首先选择其中一个按钮

    因此,我认为有两种方法可以解决这个问题:

  • 保持单选按钮接地。向集合中添加一个“无”按钮,使其工作时与未选择其他三个按钮一样。并首先选择此“无”按钮

  • 将单选按钮更改为复选框,以便用户可以选择和取消选择每个单选按钮。然后实现您自己的排除逻辑。我不推荐这个

  • 使用此选项可取消选择:

    var radios = document.getElementsByName('A');
    for(var i=0; i<radios.length; i++)
    {
        radios[i].checked = false;
    }
    
    var radios=document.getElementsByName('A');
    对于(var i=0;i使用此选项取消选择:

    var radios = document.getElementsByName('A');
    for(var i=0; i<radios.length; i++)
    {
        radios[i].checked = false;
    }
    
    var radios=document.getElementsByName('A');
    
    对于(var i=0;i,您可以使用属性
    ondblclick
    取消选择单选按钮

    <input type="radio" name="RadioGroup1
    " value="1" ondblclick="uncheckRadio();">
        Apple</label>
    

    您可以使用属性
    ondblclick
    取消选择单选按钮

    <input type="radio" name="RadioGroup1
    " value="1" ondblclick="uncheckRadio();">
        Apple</label>
    

    您需要使用javascript

    在jquery中进行绑定更容易,name=应该与呈现的groupname“name=”属性匹配

    var lastChecked = null;
    $('input[name=A]').click(function(){
      if (lastChecked == this) {
        this.checked = false;
        lastChecked = null;
      }
      lastChecked = this;
    });

    您需要使用javascript

    在jquery中进行绑定更容易,name=应该与呈现的groupname“name=”属性匹配

    var lastChecked = null;
    $('input[name=A]').click(function(){
      if (lastChecked == this) {
        this.checked = false;
        lastChecked = null;
      }
      lastChecked = this;
    });

    下面是一个类似的实现,它使用属性
    ondblclick
    和jQuery。另外,这将允许您将此功能包含在具有动态生成的客户端ID的控件中

    代码隐藏:

    foreach (ListItem li in rbl.Items)
        li.Attributes.Add("ondblclick", string.Format("clearCurrentRadioButtonSelection(\"{0}\")", rbl.UniqueID));
    
    ASPX页

    function clearCurrentRadioButtonSelection(controlName) {
        var id = "input[name=" + controlName + "]";
    
        $(id).each(function () {
            $(this).attr('checked', false);
        });
    }
    

    下面是一个类似的实现,它使用属性
    ondblclick
    和jQuery。另外,这将允许您将此功能包含在具有动态生成的客户端ID的控件中

    代码隐藏:

    foreach (ListItem li in rbl.Items)
        li.Attributes.Add("ondblclick", string.Format("clearCurrentRadioButtonSelection(\"{0}\")", rbl.UniqueID));
    
    ASPX页

    function clearCurrentRadioButtonSelection(controlName) {
        var id = "input[name=" + controlName + "]";
    
        $(id).each(function () {
            $(this).attr('checked', false);
        });
    }
    

    类似的问题和潜在解决方案。类似的问题和潜在解决方案。对于复选框,我需要互斥,为此我需要使用Ajax复选框互斥扩展器。(,因此我将使用第一个解决方案。:)对于复选框,我需要互斥,为此我需要使用Ajax复选框互斥扩展器。:(,因此我将使用第一个解决方案。)谢谢。这对我很有效。您可能希望将第一行编辑为
    =
    而不是
    =
    。谢谢。这对我很有效。您可能希望将第一行编辑为
    =
    而不是
    =