Tengo un código donde necesito dos validadores de campo requeridos por separado para un control, ambos en grupos de validación separados que luego son validados por dos botones separados.¿Cómo puedo desactivar el comportamiento de "pérdida de foco" del validador de campo requerido de ASP.NET
Este enfoque funciona bien cuando se hace clic en los botones pero se muestran ambos validadores si ingreso un valor en el cuadro de texto y luego lo quito.
¿Hay alguna manera de desactivar esta validación de "foco perdido"? Solo necesito que valide cuando se hace clic en los botones.
EDITAR
Por desgracia, si fijo EnableClientScript = false entonces no tengo ninguna notificación cliente. Lo que quiero es mostrar el mensaje de error dinámico (efectivamente en el evento OnClientClick del botón) pero no el "foco perdido" del cuadro de texto.
¿Hay alguna forma de que pueda desactivar o "desenganchar" el evento del cliente perdido?
EDITAR
Una combinación respuesta de dDejan y answeer de womp here ordenados perfectamente el problema.
Mi código final se parece a esto (para cualquier otra persona con una situación similar) ...
Javascript ...
<script type="text/javascript">
$(document).ready(function() {
$('body').fadeIn(500);
//Turn off all validation = its switched on dynamically
$.each(Page_Validators, function(index, validator) {
ValidatorEnable(validator, false);
});
});
function ToggleValidators(GroupName) {
$.each(Page_Validators, function(index, validator) {
if (validator.validationGroup == GroupName) {
ValidatorEnable(validator, true);
} else {
ValidatorEnable(validator, false);
}
});
}
</script>
ASPX Ejemplo de Control ...
<telerik:RadTextBox Width="196px" ID="txtFirstName" runat="server" MaxLength="50" Skin="Black"></telerik:RadTextBox>
<asp:RequiredFieldValidator ID="valFirstName" CssClass="Validator" runat="server" EnableClientScript="true" Display="Dynamic" ErrorMessage="You must enter your first name." ControlToValidate="txtFirstName" ValidationGroup="NeededForEmail"></asp:RequiredFieldValidator>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" CssClass="Validator" runat="server" EnableClientScript="true" Display="Dynamic" ErrorMessage="You must enter your first name." ControlToValidate="txtFirstName" ValidationGroup="NeededForSubmit"></asp:RequiredFieldValidator>
Código de botón ASPX ...
<asp:Button ID="btnGetConfCode" runat="server" Text="Get Confirmation Code" OnClientClick="ToggleValidators('NeededForEmail')" OnClick="btnGetConfCode_Click" Width="100%" ValidationGroup="NeededForEmail"/>
<asp:Button ID="btnRegisterUser" runat="server" Text="Register" OnClientClick="ToggleValidators('NeededForSubmit')" OnClick="btnRegisterUser_Click" Width="100px" ValidationGroup="NeededForSubmit" />
Por lo tanto, ahora no hay validación hasta que el usuario haga clic en el botón "Obtener código de confirmación de correo electrónico" o en el botón "Registrarse".
Si hacen clic en el botón "Obtener correo electrónico Código de confirmación" todos los controles validar aparte de la caja de texto donde el usuario es introducir el código de validación de correo electrónico y sólo ver un mensaje de validación.
Si hacen clic en el botón "Registrar", todos los controles se validarán y solo veremos un mensaje de validación.
Si se presiona cualquiera de los botones, el usuario regresa, agrega y luego elimina algo de texto, entonces solo vemos un validador. Antes de este cambio, solía ver ambos mensajes diciendo lo mismo.
Gracias por ayuda chicos
Sé que esto puede ser viejo, pero una vez que el validador se ha activado onSubmit, ¿cómo que lo apaga de nuevo el foco, por lo que el mensaje de error desaparece hasta que se haga clic en el botón enviar de nuevo? – SollyM