我有一组三个单选按钮,它们之间有互斥,因为我实现了组名属性,但问题是,在初始阶段,没有选中单选按钮, < / p>
但是当我选择任何一个单选按钮时,我不能取消选择相同的,虽然互斥正在进行中,但我希望它们也取消选择。
我的代码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 :(得分: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);
});
}