【发布时间】:2016-08-16 09:45:25
【问题描述】:
在我的 WebForms 应用程序中,我有一个 CustomValidator 控件。此控件执行我创建的 JavaScript 函数。如果此函数返回 false,则表单将不会提交。此验证器与标准 RequiredFieldValidator 和 RegularExpressionValitors 一起使用。
这在以前工作得很好,但是现在,即使 JavaScript 函数返回 false,页面仍然会提交。出于某种原因,CustomValidator 被忽略了。只要RequiredFieldValidator 和RegularExpressionValidator 控件通过,页面就会提交,即使JavaScript 函数在提交时显示错误。
我已经调试了 JavaScript 函数,它肯定会返回 false。我的CustomValidator 没有使用任何服务器端代码。
JavaScript:
function validateForm() {
if (document.getElementById("DDApplicationID").selectedIndex > 0
&& document.getElementById("div_applicationType").style.display != "none") {
return true;
}
else if (document.getElementById("DDApplicationID").selectedIndex > 0) {
var valid = true;
((validateTrainStation() == false) ? valid = false : valid);
((validateSupportType() == false) ? valid = false : valid);
((validateHomeStatus() == false) ? valid = false : valid);
((validateOtherNationality() == false) ? valid = false : valid);
((validateOtherHomeStatus() == false) ? valid = false : valid);
((validateSortCode() == false) ? valid = false : valid);
((validateCareLeaverMessage() == false) ? valid = false : valid);
return valid; //returns false in JavaScript debugger on Chrome
}
}
Web 表单 .aspx
<form id="Application" runat="server">
<asp:CustomValidator ID="CustomValidator1" runat="server" ValidationGroup="AllValidation" ClientValidationFunction="validateForm"></asp:CustomValidator>
<asp:Button ID="SaveLSFApplication" runat="server" Text="Submit Application" OnClick="saveApplication" ValidationGroup="AllValidation" />
</form>
WebForms .aspx.vb
Sub saveApplication(ByVal sender As Object, ByVal e As EventArgs)
If Page.IsValid Then
'--- do logic
End If
End Sub
我知道仅客户端验证还不够好,但它适用于仅在满足特定条件时非可选的表单部分,即当用户在下拉框中选择“其他”并且我们希望他们在文本框中输入原因。
【问题讨论】:
标签: javascript asp.net vb.net webforms