如果选中复选框,如何才能创建文本框?
我想我可以写一个自定义验证器,但是我希望尽可能避免完整的帖子来检查验证......我认为AJAX已经内置了这个场景,但我一直无法找到它。我正在思考JavaScript也是一个解决方案,但如果这是最好的方法,我可以先行一步。
答案 0 :(得分:20)
处理这个问题的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" />
添加以下JavaScript函数:
<script language="javascript" type="text/javascript">
function updateValidator() {
var enableValidator = !event.srcElement.status;
var rfvSubject = document.getElementById('rfvSubject');
ValidatorEnable(rfvSubject, enableValidator);
}
</script>
这就是它的全部。您还需要将以下代码添加到页面加载事件中,以便在用户禁用JavaScript时,仍然可以正确打开或关闭所需的字段验证器:
rfvSubject.Enabled = chkSubjectRequired.Checked
答案 1 :(得分:3)
要在ASP.Net中解决所有问题,请使复选框执行回发:
<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;
}
答案 2 :(得分:2)
您可以创建自定义验证程序,然后将这两个控件包装在UpdatePanel中。那会把它变成一个AJAX调用。有点浪费,但它可以节省您自己编写JavaScript的费用。
另外,如果你讨厌像我一样编写JS,你应该尝试使用jQuery。
答案 3 :(得分:1)
已经有一个customvalidator验证器控件,可以触发客户端javascript方法来评估值,或者是服务器端方法来比较这些值。
这是一个例子:http://msdn.microsoft.com/en-us/library/a0z2h4sw%28VS.80%29.aspx 此处说明的客户资产:http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.customvalidator.clientvalidationfunction.aspx 此处的服务器事件:http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.customvalidator.servervalidate.aspx
您可以输入代码来交叉引用复选框值。
HTH。
答案 4 :(得分:0)
您必须使用CustomValidator并在复选框和文本框中使用 ClientIDMode =“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)
<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>
答案 5 :(得分:-2)
您需要在当前使用的任何验证例程中检查它,包括客户端和服务器端。