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