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

时间:2013-04-30 06:47:22

标签: javascript radio-button

我有一组三个单选按钮,它们之间有互斥,因为我实现了组名属性,但问题是,在初始阶段,没有选中单选按钮,enter image description here < / p>

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

enter image description here

我的代码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>

5 个答案:

答案 0 :(得分:2)

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

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

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

所以,我相信有两种方法可以解决这个问题:

  1. 按住收音机按钮。在集合中添加“无”按钮,使其工作就好像没有选择其他三个按钮一样。最初选择这个“无”按钮。

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

答案 1 :(得分:1)

您需要使用javascript ...

在jquery中进行绑定,它更容易,而name =应该与你渲染的组名“name =”属性相匹配......

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

答案 2 :(得分:0)

使用此选项取消选择:

var radios = document.getElementsByName('A');
for(var i=0; i<radios.length; i++)
{
    radios[i].checked = false;
}

答案 3 :(得分:0)

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

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

当您双击单选按钮时,只需调用javascript函数将checked属性设置为false。

function uncheckRadio() {
 var choice = document.form1.RadioGroup1;
 for (i = 0; i < choice.length; i++) {
  if ( choice[i].checked = true ) 
   choice[i].checked = false; 
 }
}

答案 4 :(得分:0)

这是使用属性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);
    });
}