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à...