J'ai un code dans lequel j'ai besoin de deux valideurs de champs obligatoires distincts pour un contrôle, tous deux dans des groupes de validation séparés qui sont ensuite validés par deux boutons séparés.Comment désactiver le comportement de "focus perdu" du validateur de champs ASP.NET
Cette approche fonctionne bien lorsque les boutons sont cliqués, mais les deux valideurs indiquent si je saisis une valeur dans la zone de texte, puis la supprime. Y a-t-il un moyen de désactiver cette validation de "perte de focus"? J'en ai seulement besoin pour valider quand on clique sur les boutons.
EDIT
Malheureusement, si je mets EnableClientScript = false alors je n'ai pas des notifications client. Ce que je veux, c'est que le message d'erreur dynamique s'affiche (de manière efficace dans l'événement OnClientClick du bouton) mais pas le "focus perdu" de la zone de texte.
Y at-il un moyen de désactiver ou de "décrocher" l'événement client lostfocus?
EDIT
Combinaison de réponse et la answeer de womp here de dDejan triés parfaitement le problème.
Mon code final ressemble à ceci (pour quelqu'un d'autre avec une situation similaire) ...
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 Exemple de contrôle ...
<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>
Code de bouton 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" />
Donc, maintenant il n'y a aucune validation jusqu'à ce qu'un utilisateur clique sur le bouton "Get Email Confirmation Code" ou le bouton "Register". Si elles cliquent sur le bouton "Get Email Confirmation Code", toutes les commandes sont validées en dehors de la zone de texte où l'utilisateur doit saisir le code de validation de l'e-mail et nous ne voyons qu'un seul message de validation.
Si elles cliquent sur le bouton "Enregistrer", alors tous les contrôles sont validés et nous voyons seulement un message de validation.
Si l'un des boutons est enfoncé, l'utilisateur revient en arrière, ajoute, puis supprime du texte, puis nous ne voyons qu'un seul validateur. Avant ce changement, vous voyiez les deux messages dire la même chose.
Nous vous remercions d'aider les gars
Je sais que cela peut être vieux, mais une fois que le validateur a été activé onSubmit, comment transformez-vous-le à nouveau sur le focus, de sorte que le message d'erreur disparaît jusqu'à ce que le bouton de soumission soit cliqué à nouveau? – SollyM