2013-04-30 165 views
0

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

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

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> 
+0

类似的问题和潜在的解决方案[这里](http://stackoverflow.com/questions/4957207/how-to-check-uncheck -radio按钮上点击)。 – davmos 2013-04-30 07:20:49

回答

2

,你既有一个代码问题和误解。

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

代码问题是,在互斥排列单选按钮组中,您需要最初选择其中的一个。

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

  1. 保持单选按钮对地表。向该集合添加一个“无”按钮,以使其工作,就好像其他三个都没有被选中一样。最初选择这个“无”按钮。

  2. 变化单选按钮复选框,这样用户可以选择取消它们。然后实施您自己的排除逻辑。我不推荐这个。

+0

那么对于复选框我需要互斥,为此我需要使用Ajax复选框互扩展器。 :(所以我会用第一个解决方案。:) – 2013-04-30 09:37:14

0

使用此功能取消:

var radios = document.getElementsByName('A'); 
for(var i=0; i<radios.length; i++) 
{ 
    radios[i].checked = false; 
} 
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; 
} 
} 
1

您将需要使用JavaScript ...

做jQuery的结合,它更容易,以及名称=应符合您呈现的组名 “名=” 属性...

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

谢谢。这对我有效。您可能想要将第一行编辑为“=”而不是“==”。 – 2014-09-19 05:18:21

+0

@SeongLee谢谢,纠正.. :-) – Tracker1 2014-09-22 17:39:35

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); 
    }); 
}