Tengo un cuadro de texto y dos validaciones (RequiredFieldValidator y RegularExpressionValidator) como se muestra a continuación
<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>Pero con error necesito que el borde del campo se resalte con rojo. Y para eso se escribe el siguiente código:
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'; } }La función funciona solo con RequiredFieldValidatior. Necesito trabajar con ambas validaciones (RequiredFieldValidator y RegularExpressionValidator).
Gracias de antemano.
¿Quizás pueda establecer un punto de interrupción en su función de javascript?
Sospecho que se llama dos veces. Está utilizando dos validadores en su ControlToValidate, uno de ellos es válido y el otro no válido. El javascript se ejecuta una vez por cada validador, maneja tanto la situación en la que un validador no es válido como cuando uno es válido.
Entonces, aparentemente, en su caso, RequiredFieldValidator 'gana' y se ejecuta en último lugar.
No creo que anular la función del marco ValidatorUpdateDisplay sea la elección correcta aquí. Dado que está utilizando ASP.NET WebForms, tal vez una opción sea incluir el Ajax Control Toolkit. Tiene una extensión ValidatorCallout. Supongo que podría usar esta extensión también sin la 'llamada', pero solo la opción HighlightCssClass.
http://www.ajaxtoolkit.net/ValidatorCallout/ValidatorCallout.aspx