【发布时间】:2012-06-21 13:12:23
【问题描述】:
我有两个复选框。在提交表单之前,我需要检查是否至少检查了其中一项。
我在页面上有一个 CustomValidator。它调用一个用于服务器端验证的函数。我需要为客户端验证添加一个函数。
客户端函数应该用 JavaScript 编写。
(我不知道这里是否有所不同,但页面上还有其他用户控件,例如 textBoxes,它们使用其他非自定义验证器)。
这是复选框和自定义验证器控件:
<tr>
<td colspan="3">
<asp:CheckBox id="EmailCourse" name="EmailCourse" runat="server" />
Email course
</td>
</tr>
<tr>
<td colspan="3">
<asp:CheckBox name="SpecialReport" id="SpecialReport" runat="server" />
Special report
</td>
</tr>
<tr>
<td colspan="3">
<asp:CustomValidator id="CustomValidator1" runat="server" ErrorMessage="No checkbox checked" CssClass="error" ClientValidationFunction="validateCheckboxes_ClientValidate" OnServerValidate="validateCheckBoxes_ServerValidate"></asp:CustomValidator>
</td>
</tr>
这是服务器端验证调用的函数:
protected void validateCheckBoxes_ServerValidate(object source, ServerValidateEventArgs args)
{
if (!EmailCourse.Checked && !SpecialReport.Checked)
args.IsValid = false;
else
args.IsValid = true;
}
我尝试编写客户端函数 validateCheckboxes_ClientValidate:
<script type="text/javascript" language="javascript">
function validateCheckboxes_ClientValidate(oSrc, args) {
alert("inside function");
var ec = document.getElementById("EmailCourse");
var sr = document.getElementById("SpecialReport");
if (!sr.checked && !ec.checked) {
alert("hi it works");
args.IsValid = false;
}
else {
alert("one of them is checked");
args.IsValid = true;
}
}
</script>
这不起作用。调用该函数,显示第一个警报,但是……就是这样! IF 语句不起作用。
怎么会?我需要做些什么来更改它,以便该函数实际验证复选框并且表单在无效时不会提交?
【问题讨论】:
标签: javascript asp.net checkbox customvalidator client-side-validation