.net 如果选中复选框,如何使文本框成为必需的
如果选中复选框,我如何使文本框成为必需的.net 如果选中复选框,如何使文本框成为必需的,.net,asp.net,validation,.net,Asp.net,Validation,如果选中复选框,我如何使文本框成为必需的 我想我可以写一个自定义的验证器,但我希望尽可能避免一篇完整的回帖来检查验证。。。我原以为AJAX为这个场景内置了一些东西,但我一直找不到它。我认为直接JavaScript也是一个解决方案,但如果这是最好的方法,我可以先使用它。您可以制作一个自定义验证器,然后将这两个控件包装在UpdatePanel中。这将把它变成一个AJAX调用。这有点浪费,但它可以节省您自己编写JavaScript的时间 另外,如果你和我一样讨厌编写JS,你应该试试jQuery。你需要
我想我可以写一个自定义的验证器,但我希望尽可能避免一篇完整的回帖来检查验证。。。我原以为AJAX为这个场景内置了一些东西,但我一直找不到它。我认为直接JavaScript也是一个解决方案,但如果这是最好的方法,我可以先使用它。您可以制作一个自定义验证器,然后将这两个控件包装在UpdatePanel中。这将把它变成一个AJAX调用。这有点浪费,但它可以节省您自己编写JavaScript的时间
另外,如果你和我一样讨厌编写JS,你应该试试jQuery。你需要在当前使用的任何验证例程中检查它,包括客户端和服务器端。已经有一个customvalidator validator控件,它可以启动客户端javascript方法来评估值,或服务器端方法来比较这些值 这有一个例子: 此处解释了客户财产: 此处的服务器事件: 您可以输入代码以交叉引用复选框值
HTH.处理此问题的JavaScript并不十分困难 给定以下ASP控件:
<asp:TextBox ID="txtSubject" runat="server" />
<asp:CheckBox ID="chkSubjectRequired" runat="server" OnClick="updateValidator();" />
<asp:RequiredFieldValidator ID="rfvSubject" ControlToValidate="txtSubject" ErrorMessage="You must enter a subject." runat="server" />
要在ASP.Net中解决所有这些问题,请使复选框执行回发:
<asp:CheckBox
ID="Existing"
runat="server"
Text="Conditional ValidatorVal"
AutoPostBack="True"
OnCheckedChanged="Existing_CheckedChanged"
/>
您必须使用CustomValidator并在复选框和文本框中使用clientMode=“Static”
<asp:TextBox ID="txtSubject" ClientIDMode="Static" runat="server" />
<asp:CheckBox ID="chkSubjectRequired" ClientIDMode="Static" runat="server" />
<asp:CustomValidator ID="valid1" runat="server"
ClientValidationFunction="validateCheckboxCheck"
ErrorMessage="You must write anything.">
</asp:CustomValidator>
并在下面写下函数的脚本标记(需要jQuery)
函数validateCheckboxCheck(源,参数){
如果($(“#chkSubjectRequired”)。为(“:选中”)){
if($(“#txtSubject”).val(){
//返回错误消息的false
args.IsValid=false;
}否则{
//返回真值
args.IsValid=true;
}
}否则{
//返回真值
args.IsValid=true;
}
}
太棒了,非常感谢……尽管查看您的asp代码,但即使未选中复选框,也不需要txtSubject吗?你的意思是禁用验证器…然后让javascript启用它吗?所有提供的代码都没有经过测试。是啊,看来我倒过来了。我已经修改了我的答案。event.src元素上的status
属性不应该被选中吗?@Rory-status和checked都有效。坦白地说,我的整个答案太以IE为中心,对任何人都没有多大用处,现在每个人都在使用jQuery,这是我两年前还没有发现的。。。
<asp:CheckBox
ID="Existing"
runat="server"
Text="Conditional ValidatorVal"
AutoPostBack="True"
OnCheckedChanged="Existing_CheckedChanged"
/>
protected void Existing_CheckedChanged(object sender, EventArgs e)
{
RequiredFieldValidator1.Enabled =! Existing.Checked;
}
<asp:TextBox ID="txtSubject" ClientIDMode="Static" runat="server" />
<asp:CheckBox ID="chkSubjectRequired" ClientIDMode="Static" runat="server" />
<asp:CustomValidator ID="valid1" runat="server"
ClientValidationFunction="validateCheckboxCheck"
ErrorMessage="You must write anything.">
</asp:CustomValidator>
<script type="text/javascript">
function validateCheckboxCheck(source, args) {
if ($("#chkSubjectRequired").is(":checked")) {
if ($("#txtSubject").val()==="") {
// return false for error message
args.IsValid = false;
} else {
// return true
args.IsValid = true;
}
} else {
// return true
args.IsValid = true;
}
}
</script>