IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

custumvalidator coté client


Sujet :

ASP.NET

  1. #1
    Membre habitué
    Inscrit en
    Août 2008
    Messages
    1 596
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 1 596
    Points : 175
    Points
    175
    Par défaut custumvalidator coté client
    Bonjour, j'ai un custumvalidator et je veux le valider coté client, j'ai réussi à le faire coté serveur avec la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    protected void cusCustom_ServerValidate(object sender, ServerValidateEventArgs e)
        {
            if (DateRecu.Text != "")
            {
                DateTime dr = Convert.ToDateTime(e.Value);
                DateTime dc = Convert.ToDateTime(DateCorresp.Text);
     
                int difference = Math.Abs((dc - dr).Days);
                if (difference <= 31)
                    e.IsValid = true;
                else
                    e.IsValid = false;
            }
            else
                e.IsValid = true;
        }
    et je veux faire la meme chose coté client, pourriez vous m'aider a le recoder de telle facon acomparer deux dates et si la difference est supérieur a un mois je dois le signaler a l'utilisateur

    Merci

  2. #2
    Membre averti

    Développeur .NET
    Inscrit en
    Juillet 2008
    Messages
    176
    Détails du profil
    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juillet 2008
    Messages : 176
    Points : 310
    Points
    310
    Par défaut
    Salut,

    Ton code est bien compliqué pour comparer deux dates. Je t'invite à consulter ceci :

    https://msdn.microsoft.com/en-us/lib...vs.110%29.aspx

    Si tu veux comparer une diff de 1 mois, tu prends la date1, tu crées une date2 qui n'est autre que date1.AddMonths(-1) puis date1 < date2.

    Bref, la question initiale n'est pas là.

    Tu peux bien sûr (et je te le recommande) effectuer ce genre de tests de validation de saisie côté client ET côté serveur en gardant bien à l'esprit que côté client, ce n'est que de l'ergonomie, pas vraiment de la validation. Pour peu que tu appelles un WS, n'importe quel Kevin pourra trouver l'appel à ce WS et l'appeler avec des valeurs que tes contrôles de saisie client n'auraient pas laisser passer.

    Côté client, il existe de nombreuses solutions à commencer par l'Ajax Control Toolkit (bof).

    Soit tu fais ton code toi même en JS (via jQuery, ce sera plus sympa), soit tu as recours à un plugin (toujours avec jQuery) tel que jQValidate, qui a fait ses preuves.

    Grossièrement, il te faut t'abonner à des événements de type blur sur les input (lorsque le contrôle perd le focus) pour vérifier la saisie, la transformer en date et effectuer les comparaisons.

    bon courage

  3. #3
    Membre habitué
    Inscrit en
    Août 2008
    Messages
    1 596
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 1 596
    Points : 175
    Points
    175
    Par défaut
    J'ai changee ca en mettant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     <script language="javascript" type="text/javascript">
            function CheckPeriodLength(source, arguments) {
                var dateDeb = new Date()
                var dateFin = new Date()
     
                var TabChaine = document.getElementById("<%=DateCorresp.ClientID %>").value.split('\/')
                dateDeb.setDate(TabChaine[2]);
                dateDeb.setMonth(TabChaine[1]);
                dateDeb.setYear(TabChaine[0]);
     
                TabChaine = arguments.Value.split('\/')
                dateFin.setDate(TabChaine[2]);
                dateFin.setMonth(TabChaine[1]);
                dateFin.setYear(TabChaine[0]);
     
                if (dateFin > dateDeb.setDate(dateDeb.getDate() + 30)) {
                    arguments.IsValid = false;
                } else {
                    arguments.IsValid = true;
                }
            }
     
            function CheckPeriodLength2(source, arguments) {
                var dateDeb = new Date()
                var dateFin = new Date()
     
                var TabChaine = document.getElementById("<%=DateRecu.ClientID %>").value.split('\/')
                dateDeb.setDate(TabChaine[2]);
                dateDeb.setMonth(TabChaine[1]);
                dateDeb.setYear(TabChaine[0]);
     
                TabChaine = arguments.Value.split('\/')
                dateFin.setDate(TabChaine[2]);
                dateFin.setMonth(TabChaine[1]);
                dateFin.setYear(TabChaine[0]);
     
                if (dateFin.setDate(dateFin.getDate() + 30) < dateDeb) {
                    arguments.IsValid = false;
                } else {
                    arguments.IsValid = true;
                }
            }
    mais ce la ne marche pas comme je veux

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    <tr>
                                                    <td>
                                                        <label>
                                                            Date reçu :
                                                        </label>
                                                    </td>
                                                    <td>
                                                        <asp:TextBox ID="DateRecu" runat="server" CssClass="txt"></asp:TextBox>
                                                        <asp:ImageButton runat="Server" ID="ImgcalCores" ImageUrl="~/Images/IcoDate.png"
                                                            AlternateText="Appuyer pour afficher le calendrier" CausesValidation="false" />
     
                                                        <asp:CustomValidator ID="DateValidator2" runat="server" ControlToValidate="DateRecu"
                                                            ValidateEmptyText="false" ErrorMessage="> mois" ClientValidationFunction="CheckPeriodLength"
                                                            EnableViewState="true" />
                                                    </td>
                                                    <td>
                                                        <label>
                                                            Date bulletin :</label>
                                                    </td>
                                                    <td>
                                                        <asp:TextBox ID="DateCorresp" runat="server" CssClass="txt"></asp:TextBox>
     
                                                        <asp:CustomValidator ID="CustomValidator1" runat="server" ControlToValidate="DateCorresp"
                                                            ValidateEmptyText="false" ErrorMessage="> mois" ClientValidationFunction="CheckPeriodLength2"
                                                            EnableViewState="true" />
                                                    </td>
                                                </tr>

  4. #4
    Membre habitué
    Inscrit en
    Août 2008
    Messages
    1 596
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 1 596
    Points : 175
    Points
    175
    Par défaut
    aucune idée ? je bloque

  5. #5
    Membre habitué
    Inscrit en
    Août 2008
    Messages
    1 596
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 1 596
    Points : 175
    Points
    175
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     <td>
                                                        <asp:TextBox ID="DateRecu" runat="server" CssClass="txt" AutoPostBack="true"></asp:TextBox>
                                                        <asp:ImageButton runat="Server" ID="ImgcalRecu" ImageUrl="~/Images/IcoDate.png"
                                                            AlternateText="Appuyer pour afficher le calendrier" CausesValidation="false" />
                                                        <asp:CalendarExtender ID="Calendarextender2" TargetControlID="DateRecu" runat="server"
                                                            PopupButtonID="ImgcalRecu" Format="yyyy/MM/dd" CssClass="red">
                                                        </asp:CalendarExtender>
                                                        <asp:RequiredFieldValidator runat="server" ID="rfDRecu" ForeColor="red" ControlToValidate="DateRecu"
                                                            ErrorMessage="*" ValidationGroup="correspondance" />
                                                        <asp:CompareValidator ID="cpvDateRecu" runat="server" ControlToCompare="DateCorresp"
                                                            ControlToValidate="DateRecu" CultureInvariantValues="True" ErrorMessage="Erreur"
                                                            Operator="GreaterThanEqual" SetFocusOnError="True" Type="Date" ValidationGroup="correspondance"></asp:CompareValidator>
                                                        <asp:CustomValidator ID="cuvDateRecu" runat="server" ControlToValidate="DateRecu"
                                                            ValidateEmptyText="true" ErrorMessage="> mois" ClientValidationFunction="CheckPeriodLength"
                                                            EnableViewState="true" />
                                                    </td>
                                                    <td>
                                                        <asp:label runat="server" id="lblDateCorresp">
                                                            Date Correspondance :</asp:label>
                                                    </td>
                                                    <td>
                                                        <asp:TextBox ID="DateCorresp" runat="server" CssClass="txt" AutoPostBack="true"></asp:TextBox>
                                                        <asp:ImageButton runat="Server" ID="ImgcalCor" ImageUrl="~/Images/IcoDate.png" AlternateText="Appuyer pour afficher le calendrier"
                                                            CausesValidation="false" />
                                                        <asp:CalendarExtender ID="Calendarextender1" TargetControlID="DateCorresp" runat="server"
                                                            PopupButtonID="ImgcalCor" Format="yyyy/MM/dd" CssClass="red">
                                                        </asp:CalendarExtender>
                                                        <asp:RequiredFieldValidator runat="server" ID="rqDateCorresp" ForeColor="red"
                                                            ControlToValidate="DateCorresp" ErrorMessage="*" ValidationGroup="correspondance" />
                                                        <asp:CompareValidator ID="cpvDateCorresp" runat="server" ControlToCompare="DateRecu"
                                                            ControlToValidate="DateCorresp" CultureInvariantValues="True" ErrorMessage="Erreur"
                                                            Operator="LessThanEqual" SetFocusOnError="True" Type="Date" ValidationGroup="correspondance"></asp:CompareValidator>
                                                        <asp:CustomValidator ID="cuvDateCorresp" runat="server" ControlToValidate="DateCorresp"
                                                            ValidateEmptyText="true" ErrorMessage="> mois" ClientValidationFunction="CheckPeriodLength2"
                                                            EnableViewState="true" />
                                                    </td>
    Le postback est il obligatoire dans ce cas ?

    le probleme persiste pour moi, parfois ca fonctionne parfois non, et parfois le resultat ca fonctionne et le customer se declenche ???

Discussions similaires

  1. Utilisation de MySQL coté client
    Par ghostdog_rm dans le forum Installation
    Réponses: 3
    Dernier message: 31/01/2006, 23h22
  2. Probléme cache avec IE et XML/XSL coté client.
    Par rataflo dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 06/08/2005, 19h06
  3. ouvrir un fichier excel coté client
    Par youss dans le forum Servlets/JSP
    Réponses: 12
    Dernier message: 27/07/2005, 14h42
  4. [Indy] Intercepter les messages coté client
    Par PpPool dans le forum Web & réseau
    Réponses: 6
    Dernier message: 04/07/2005, 10h19
  5. [Concept] Curseur coté client et curseur coté serveur
    Par freud dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 13/09/2002, 22h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo