gpt4 book ai didi

javascript - WebForms - 自定义验证器不再工作

转载 作者:行者123 更新时间:2023-11-27 22:37:47 28 4
gpt4 key购买 nike

在我的 WebForms 应用程序中,我有一个 CustomValidator 控件。该控件执行我创建的 JavaScript 函数。如果此函数返回 false,则表单将不会提交。此验证器与标准 RequiredFieldValidatorRegularExpressionValitors 一起使用。

这曾经工作得很好,但是现在,即使 JavaScript 函数返回 false,页面仍然会提交。由于某种原因,CustomValidator 被忽略。只要 RequiredFieldValidatorRegularExpressionValidator 控件通过,页面就会提交,即使 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
}
}

网络表单.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 函数返回 false,但这在 CustomValidator 控件的上下文中没有任何意义。为了阻止表单提交,CustomValidator 会评估属性 IsValid。如果 IsValidfalse,则表单将不会提交。

以下是修改后的 JavaScript 函数以反射(reflect)此更改:

function validateForm(sender, args) { //added two function parameters
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);

args.IsValid = valid; //no longer returning valid
}
}

如您所见,我添加了两个函数参数:senderargs。然后,我现在将 args 参数的属性 IsValid 设置为 valid< 的值,而不是简单地返回 valid/。因此,如果 validfalse,则 IsValid 为 false。然后评估此 IsValid,从而阻止表单继续提交。

关于javascript - WebForms - 自定义验证器不再工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38971586/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com