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

JavaScript Discussion :

getElementById renvoie rien ou null avec un DatePicker


Sujet :

JavaScript

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 43
    Points : 31
    Points
    31
    Par défaut getElementById renvoie rien ou null avec un DatePicker
    Bonjour,

    Je suis développeur c# et je n'ai jamais fait de Javascript et j'ai un petit problème depuis hier.

    À la base c'est juste pour faire une vérification si la personne est majeure

    Je souhaite récuperer la valeur de mon datepicker sous la forme d'une date.
    Le problème est que mon var birth = document.getElementById("dropDownBirthdate"); ne fonctionne pas ou renvoie null après tout les essais que j'ai fais :

    Mon code :

    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
    //Dans l'ASCX
    <myTools:DatePicker runat="server" ID="dropDownBirthdate" />
    <asp:CustomValidator ID="CustomValidator1" runat="server" ErrorMessage="Age inférieur à 18 ans" ClientValidationFunction="ValidationDate" ValidationGroup="create"></asp:CustomValidator>
     
    // ET 
     
    <script type="text/javascript">
        function ValidationDate(sender, args) {
            alert("oh"); // Ici tout va bien
     
            //TO REDO
            var birth = document.getElementById("dropDownBirthdate");
     
            alert("ah"); // Ici on ne passe pas
     
     
            //var ddlDate = new date(birth);
            //var ddlYear = ddlDate.getFullYear();
     
            //Date Actuelle
            var dtNow = new Date();
            var dtNowYear = dtNow.getFullYear();
     
            var elapsed = dtNowYear - ddlYear;
            if (elapsed > 18)
            {
                args.IsValid = true;
            }
            else
            {
                args.IsValid = false;
            }
          }
    </script>
    Mon DatePicker un peu Special :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    //Dans l'ASCX
    <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="DatePicker.ascx.cs" Inherits="myTools.DatePicker" %>
    <asp:DropDownList runat="server" ID="ddlSelectDay"  />
    <asp:DropDownList runat="server" ID="ddlSelectMonth" />
    <asp:DropDownList runat="server" ID="ddlSelectYear" />
    et
    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    //Dans l'ASCX.cs
        public partial class DatePicker : UserControl
        {
            public DateTime Date
            {
                get
                {
                    try
                    {
                        return new DateTime(int.Parse(ddlSelectYear.SelectedValue), int.Parse(ddlSelectMonth.SelectedValue), int.Parse(ddlSelectDay.SelectedValue));
                    }
                    catch
                    {
                        return new DateTime(int.Parse(ddlSelectYear.SelectedValue), int.Parse(ddlSelectMonth.SelectedValue), 1);   
                    }
                }
                set
                {
                    ddlSelectDay.SelectedValue = value.Day.ToString();
                    ddlSelectMonth.SelectedValue = value.Month.ToString();
                    ddlSelectYear.SelectedValue = value.Year.ToString();
                }
            }
     
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    var days = new Dictionary<string, int>();
     
                    for (int i = 1; i <= 31; i++)
                    {
                        days.Add(i.ToString().PadLeft(2, '0'), i);
                    }
     
                    ddlSelectDay.DataSource = days;
                    ddlSelectDay.DataTextField = "Key";
                    ddlSelectDay.DataValueField = "Value";
                    ddlSelectDay.DataBind();
     
                    var months = new Dictionary<string, int>();
     
                    for (int i = 1; i <= 12; i++)
                    {
                        months.Add(i.ToString().PadLeft(2, '0'), i);
                    }
     
                    ddlSelectMonth.DataSource = months;
                    ddlSelectMonth.DataTextField = "Key";
                    ddlSelectMonth.DataValueField = "Value";
                    ddlSelectMonth.DataBind();
     
                    var year = new Dictionary<string, int>();
     
                    for (int i = DateTime.Now.Year; i >= 1900; i--)
                    {
                        year.Add(i.ToString().PadLeft(2, '0'), i);
                    }
     
                    ddlSelectYear.DataSource = year;
                    ddlSelectYear.DataTextField = "Key";
                    ddlSelectYear.DataValueField = "Value";
                    ddlSelectYear.DataBind();
                }
            }
        }
    Vraiment je sais plus quoi faire là...

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Merci de lire : Important : Les règles incontournables d'utilisation de ce forum.

    Le code serveur ne nous intéresse pas, c'est le code HTML généré qu'il faut nous montrer !

  3. #3
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    Trois raison pour lesquelles getElementById ne retourne rien

    1) l'id n'est pas présent dans la page
    2) casi identique l'appel à lieu avant que l'id n'existe
    3) l'objet sur lequel on fait l'appel n'a pas de descendant avec cet id.
    4) l'id existe en plusieurs exemplaire (arrive sur certains navigateurs)

    A+JYT

Discussions similaires

  1. getElementById ne renvoie rien
    Par defluc dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 30/09/2012, 17h04
  2. Requête SQL qui ne renvoie rien quand la valeur est nulle
    Par vocal94130 dans le forum Requêtes
    Réponses: 4
    Dernier message: 01/09/2010, 14h11
  3. getElementById renvoi null
    Par polo42 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 23/07/2009, 10h43
  4. $_SERVER["QUERY_STRING"] avec POST ne renvoie rien !
    Par belocom dans le forum Langage
    Réponses: 5
    Dernier message: 12/10/2007, 21h02
  5. pb avec le ExecuteQuery(), il ne renvoie rien ?
    Par FamiDoo dans le forum JDBC
    Réponses: 9
    Dernier message: 31/03/2007, 20h28

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