如何验证互斥CheckBox至少有一个选中?

chocstarfish 2009-03-11 03:53:21
我用了两个Checkbox配合Mutually Exclusive Extension做成两个互斥CheckBox,现在想用CustomerValidator验证这两个Checkbox至少一个被选中,最好用客户端脚本实现。可是发现CustomerValidator的ControlToValidate貌似不能写Checkbox类型的,另外javascript应该怎么写?如果不能用CustomerValidator那应该如何实现?请高手指教,谢谢!
...全文
246 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
周公 2009-03-11
  • 打赏
  • 举报
回复
就两个CheckBox?为什么不用RadioButton呢?
symbol441 2009-03-11
  • 打赏
  • 举报
回复
参考

<script language="javascript" type="text/javascript">

function ClientValidate(sender, args)
{
var flag = false;
var list=document.getElementsByTagName("input");


for (var i=0; i<list.length; i++)
{
if(list[i].type=="checkbox")
{
if(list[i].checked==true)
{
flag = true;
}
}
}
if (flag)
{
args.IsValid = true;
}
else
{
args.IsValid = false;
}
}

</script>

<asp:CheckBoxList runat="server" ID="cb" RepeatColumns="6" DataValueField="ID"
DataTextField="Name">
</asp:CheckBoxList>
<asp:CustomValidator ID="CustomValidator1" runat="server" ClientValidationFunction="ClientValidate"
Display="Dynamic" ErrorMessage="请至少选择一项企业类别"></asp:CustomValidator>


fire_savage 2009-03-11
  • 打赏
  • 举报
回复
假如你2个checkbox的名字都时chk
function checkstatus()
{
var arrChk = document.getElementsByName("chk");
int nChkSum = 0;
for (int i=0; i<arrChk.length; i++)
{
var objChk = arrChk[i];
if (objChk.checked)
nChkSum++;
}
return nChkSum==1;
}
form的onsubmit事件设置成 return checkstatus();

活靶子哥哥 2009-03-11
  • 打赏
  • 举报
回复
1 建议你在每个checkbox被点击时来把另外一个checkbox至成false而不是最后在验证,这样体验好些,但记得服务器端仍要验证。
2 CustomerValidator也可以做但他是最后才验证的,设置ClientValidationFunction为你的javascript函数名。

62,268

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧