Voici mon problème :
J'ai deux TextBox sur un formulaire.
Je voudrai vérifier qu'au moins un des deux TextBox est rempli.
Comment puis-je faire ?
Voici mon problème :
J'ai deux TextBox sur un formulaire.
Je voudrai vérifier qu'au moins un des deux TextBox est rempli.
Comment puis-je faire ?
Bonjour,
dans la partie HTML, tu ajoutes
puis dans le code coté server, tu ajoutes
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 <asp:CustomValidator id="AllValidator" CssClass="TexteRouge" OnServerValidate="ValidAll" Display="None" Text="" EnableClientScript="true" ErrorMessage="" runat="server"/>
à quelle faute de synthase près, ca doit marcher
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 void ValidAll (object source, ServerValidateEventArgs args) { if (MyTextBox1.Value == "" || MyTextBox2.Value == "") { AllValidator.ErrorMessage = "L'un des 2 champs doit être rempli"; args.IsValid = false; } else args.IsValid = true; }
Il ne faut pas mettre le contrôle à valider (avec le paramètre ControlToValidate) ?
J'ai aussi plusieurs autres Validators sur la page, mais ca ne fontionne pas.
Montre ce que tu as fait?
Qu'est ce qui ne fonctionne pas exactement?
Code HTML
Code Behind
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 <asp:CustomValidatorID="CustomValidator8"runat="server"ClientValidationFunction="Valider_Tel_GSM"style="z-index: 0; left: 240px; position: absolute; top: 345px">*</asp:CustomValidator> <asp:CustomValidatorID="CustomValidator9"runat="server"ClientValidationFunction="Valider_Tel_GSM"style="z-index: 0; left: 240px; position: absolute; top: 370px">*</asp:CustomValidator>
J'ai un message d'erreur au niveau du JavaScript : Objet attendu
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Function Valider_Tel_GSM(ByVal Source AsObject, ByVal Args As ServerValidateEventArgs) If (Me.Tel.Text = ""AndMe.GSM.Text = "") Then Me.CustomValidator8.ErrorMessage = "Le champ Téléphone ou le champ GSM doit être complété !" Args.IsValid = False Else Args.IsValid = True EndIf Return Args.IsValid EndFunction
Je n'ai pas fait attention que tu étais en VB.NET.
![]()
Mais par contre, il n'y aucun interet à metre 2 validateurs sur la même fonction.
Je ne vois pas de javascript dans ton code la. Quel est le message d'erreur extactement. N'as tu pas de fonction javascript au niveau de tes textBox?
L'erreur que j'obtiens en javascript, c'est une erreur lors de l'exécution de la page (Erreur de script affiché par IE) (après le post back).
Difficile donc de dire d'où provient le problème.
Dans mon formulaire, j'ai pas mal de champs différents avec des validators. Pour ceux-là, je n'ai pas de soucis.
Le problème intervient quand je veux un des deux champs (GSM ou Téléphone) rempli.
Essai ça
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Function Valider_Tel_GSM(ByVal Source AsObject, ByVal Args As ServerValidateEventArgs) If (Me.Tel.Text = "" Or Me.GSM.Text = "") Then Me.CustomValidator8.ErrorMessage = "L'un des champs Téléphone ou GSM doit être complété !" Args.IsValid = False Else Args.IsValid = True EndIf Return Args.IsValid EndFunction
Peux-tu me dire quelle différence il y a par rapport à ma fonction ?
Si ce n'est qu'au lieu de mettre AND dans la condition, tu mets OR.
Ce qui ne correspond pas à mon souhait...
J'ai fait quelques modifications
Dans le code source de la page :
Dans le code Behind :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 <asp:CustomValidatorID="CustomValidator8"runat="server"OnServerValidate="Valider_Tel_GSM"style="z-index: 0; left: 240px; position: absolute; top: 345px">*</asp:CustomValidator>
Je n'ai plus de message d'erreur du côté JavaScript (la fonction était appelée avec le paramètre ClientValidationFunction).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 ProtectedSub Valider_Tel_GSM(ByVal source AsObject, ByVal args As System.Web.UI.WebControls.ServerValidateEventArgs) Handles CustomValidator8.ServerValidate If (Me.Tel.Text = ""AndMe.GSM.Text = "") Then Me.CustomValidator8.ErrorMessage = "Le champ Téléphone ou le champ GSM doit être complété !" args.IsValid = False Else args.IsValid = True EndIf EndSub
Mais ca ne fonctionne toujours pas. Les données de la page sont enregistrées quand les deux champs sont vides. Or, il faudrait empêcher cela.
J'ai déjà essayé de faire le test à partir d'une fonction JavaScript, comme sont fait tous les autres tests de la page. Mais on ne passe pas par cette fonction si les champs ne sont pas complétés.
De plus, utiliser un RequiredFieldValidator ne m' aidera pas, car je n'ai pas besoin que les deux champs soient complétés...
Vous avez dit Casse-tête ... ?
Bon, j'ai trouvé une solution...
J'ai fait comme dans l'ancien temps, avec l'asp :
Utilisation de javascript pour tester le formulaire avant l'envoi sur le serveur.
Heureusement que les vieux procédés fonctionnent toujours !!!
Partager