Javascript 需要互斥复选框或不可取消选择的单选按钮
我需要其中一个:Javascript 需要互斥复选框或不可取消选择的单选按钮,javascript,c#,jquery,asp.net,Javascript,C#,Jquery,Asp.net,我需要其中一个: 可取消选择的单选按钮或 互斥复选框 背景信息: 我有一个中继器 对于中继器中的每一行,都有一个可以“生成”或“重新打印”的关联文档 用户应该能够在任何给定行中选择最多一个复选框。在此之后,单击一个按钮将在一次过程中处理他们的所有选择 当我搜索“互斥复选框”时,通常的回答是,“这就是单选按钮的用途。” 当我搜索“可取消选择的单选按钮”时,常见的回答是,“这就是复选框的用途。” 其他人建议使用自定义JavaScript/jQuery解决方案,但没有一种解决方案的复选框/单选按钮
- 可取消选择的单选按钮或
- 互斥复选框
注意:我唯一可以访问的第三方软件是Telerik的ASP.NET AJAX用户界面,它不包含明显的解决方案。使用复选框列表并处理所选的索引
private void checkedListBox1_SelectedIndexChanged(object sender, EventArgs e)
{
if (checkedListBox1.CheckedItems.Count > 0)
{
foreach (int i in checkedListBox1.CheckedIndices)
{
checkedListBox1.SetItemCheckState(i, CheckState.Unchecked);
}
}
}
使用复选框列表并处理SelectedIndexChanged
private void checkedListBox1_SelectedIndexChanged(object sender, EventArgs e)
{
if (checkedListBox1.CheckedItems.Count > 0)
{
foreach (int i in checkedListBox1.CheckedIndices)
{
checkedListBox1.SetItemCheckState(i, CheckState.Unchecked);
}
}
}
使用Javascript的中继器中的“互斥复选框”示例:
window.onload = function(){
var repeater = document.getElementById('repeater');
var chks = repeater.querySelectorAll('[type=checkbox]');
for(var i = 0,chk;chk = chks[i];++i){
chk.onclick = function(){
if(this.checked){
for(var j=0,ch;ch=chks[j;++j]){
if(ch !== this)
ch.checked = false;
}//for
}//if(this...
}//chk.onclick
}//for(var i
}//window.onload
使用Javascript的中继器中的“互斥复选框”示例:
window.onload = function(){
var repeater = document.getElementById('repeater');
var chks = repeater.querySelectorAll('[type=checkbox]');
for(var i = 0,chk;chk = chks[i];++i){
chk.onclick = function(){
if(this.checked){
for(var j=0,ch;ch=chks[j;++j]){
if(ch !== this)
ch.checked = false;
}//for
}//if(this...
}//chk.onclick
}//for(var i
}//window.onload
我更喜欢StackOverflow,但我最终在GitHub上找到了这个 这是我最后得到的,还有一些文档。基本上是一样的,但是使用.prop而不是.attr,因为这里阅读了Tim Down对两者之间差异的解释:
我更喜欢StackOverflow,但我最终在GitHub上找到了这个 这是我最后得到的,还有一些文档。基本上是一样的,但是使用.prop而不是.attr,因为这里阅读了Tim Down对两者之间差异的解释:
“取消选择”是什么意思?您可以将组中的所有收音机设置为
。checked=false
用户应该能够从单选按钮中删除所选内容,就像他们可以使用复选框一样。因此,您建议在一组单选按钮上的每一行中调用“.checked=false”的“clear selections”按钮?据我所知,ASP:RadioButtons没有可访问的“OnClientClicked”处理程序,因此需要另一个控件,对吗?取消单选按钮的概念被打破了。单选按钮是“一个值在任何时候都有效”的UI隐喻。如果“unselected”(又称“undefined”)是您拥有的值之一,请为其制作一个单选按钮。这与您认为膨胀的内容无关。这是关于可用性的,这是基于惯例和明显性的。一个单选按钮是不可取消的,这既不明显,也不是一个典型用户知道的惯例。它违背了单选按钮的工作原理,仅仅为了你的直觉而打破了用户的期望。我不认为这是这么做的好理由。这就像使用两个条目的下拉列表,“是”和“否”。错了,你说的“取消选择”是什么意思?您可以将组中的所有收音机设置为。checked=false
用户应该能够从单选按钮中删除所选内容,就像他们可以使用复选框一样。因此,您建议在一组单选按钮上的每一行中调用“.checked=false”的“clear selections”按钮?据我所知,ASP:RadioButtons没有可访问的“OnClientClicked”处理程序,因此需要另一个控件,对吗?取消单选按钮的概念被打破了。单选按钮是“一个值在任何时候都有效”的UI隐喻。如果“unselected”(又称“undefined”)是您拥有的值之一,请为其制作一个单选按钮。这与您认为膨胀的内容无关。这是关于可用性的,这是基于惯例和明显性的。一个单选按钮是不可取消的,这既不明显,也不是一个典型用户知道的惯例。它违背了单选按钮的工作原理,仅仅为了你的直觉而打破了用户的期望。我不认为这是这么做的好理由。这就像使用两个条目的下拉列表,“是”和“否”。错了,我正在调查这个控制。谢谢你的回答。一旦我找到了解决方案,我很可能会接受它。因为所有的帖子都是回帖,所以它并不漂亮,但它会起作用。我现在正在研究这个控件。谢谢你的回答。一旦我找到一个解决方案,我可能会接受它。它并不漂亮,因为所有的帖子都支持它,但它会起作用。