电子邮件验证ASP.NET WebForms边框



我有文本框和两个验证(RequiredFieldValidator和RegularExpressionValidator(,如下所示

<asp:TextBox runat="server" ID="txtEmailFrom" CssClass="form-control"></asp:TextBox>
<asp:RequiredFieldValidator 
ID="RequiredFieldValidator3" 
runat="server" 
ErrorMessage="Field Required" 
ControlToValidate="txtEmailFrom" 
Display="Dynamic"
ForeColor="Red"></asp:RequiredFieldValidator>
<asp:RegularExpressionValidator 
ID="regexEmailValid" 
runat="server" 
ValidationExpression="w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*" 
ControlToValidate="txtEmailFrom" 
ForeColor="Red"
Display="Dynamic"
ErrorMessage="Invalid Email Format"></asp:RegularExpressionValidator>

但有了错误,我需要用红色突出显示字段的边界。为此,下面的代码是:

function ValidatorUpdateDisplay(val) {
if (typeof (val.display) == "string") {
if (val.display == "None") {
return;
}
if (val.display == "Dynamic") {
val.style.display = val.isvalid ? "none" : "inline";
return;
}
}
val.style.visibility = val.isvalid ? "hidden" : "visible";
if (val.isvalid) {
document.getElementById(val.controltovalidate).style.border = '1px solid #333';
}
else {
document.getElementById(val.controltovalidate).style.border = '1px solid red';
}
}

该函数仅适用于RequiredFieldValidation。我需要同时使用(RequiredFieldValidator和RegularExpressionValidator(验证。

提前谢谢。

也许您可以在javascript函数中设置断点?

我怀疑它被呼叫了两次。您在ControlToValidate上使用了两个验证器,其中一个有效,另一个无效。javascript由每个验证器执行一次,它处理验证器无效和有效的情况。

因此,显然在您的情况下,RequiredFieldValidator"获胜"并最后执行。

我不认为在这里重写框架函数ValidatorUpdateDisplay是正确的选择。如果您使用的是ASP.NET WebForms,那么也许可以选择包含Ajax Control Toolkit。它具有ValidatorCallout扩展名。我想你也可以在没有"callout"的情况下使用这个扩展,但只有HighlightCssClass选项。

http://www.ajaxtoolkit.net/ValidatorCallout/ValidatorCallout.aspx

最新更新