我有一组文本框,需要将字段验证连接到它们。显然,它们都共享相同的验证组名称。我有一个服务条款的复选框,需要在点击提交按钮实际执行任何操作之前进行检查。
是否有一些C#代码会说如果未选中此框,则验证组失败?
或者有更好的方法吗?
编辑: 我添加了一个自定义验证器,并在我的代码后面使用它。不起作用。
protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args)
{
args.IsValid = false;
if (cbxTerms.Checked)
args.IsValid = true;
}
答案 0 :(得分:0)
如果我这样做,我会使用JavaScript。页面加载时,将客户端事件处理程序附加到提交按钮。在处理程序内部检查是否选中了复选框,如果是,则返回true,否则返回false,取消提交。如果JavaScript被关闭那么也可以,因为你应该进行一些服务器端验证,因为人们也可以用其他方式来汇总表单。
答案 1 :(得分:0)
你可以做你上面所做的事情,但如果没有像那样检查那么返回
if (!cbxTerms.Checked)
{requiredlabel.text="*";
return;}
您可以手动设置标签,告诉用户需要该字段
答案 2 :(得分:0)
我认为这是一种略有不同的方法,但我前一段时间用它来处理类似的情况,它看起来效果很好。
答案 3 :(得分:0)
我想出了怎么做。我做了一个文本框,为它分配了一个req字段验证器。将文本框99999px放在屏幕上。在我的c#中我说如果选中复选框,则textbox.text =“”;在复选框中检查已更改的事件我说如果选中复选框,则表示textbox.text =“1”;。比我能找到的任何其他解决方案容易得多
编辑:最好使用隐藏字段。
答案 4 :(得分:0)
如果未选中复选框,您甚至可以阻止回发
Button1.Attributes["onclick"] =
"if (!$get('" + CheckBox1.ClientID + "').checked){alert('Agree with us,plz!');return false;}";
为什么要做所有验证的东西,如果可以防止:)
或者如果你强迫团队无效,那么可以在客户端赢得你自己的验证:
function myStartUpValidation(group){
var result=true;
//Page_ClientValidate(group); to validate group
for (var i = 0; i < Page_Validators.length; i++) {
if(Page_Validators[i].validationGroup==group){
try{
ValidatorValidate(Page_Validators[i]); //this forces validation in all groups
if(Page_Validators[i].isvalid==false){result=false;}
}catch(err){}
}
}
return result;
}
或额外的验证员......