2010-01-20 4 views
4

J'ai trois liste déroulante pour jour mois et année maintenant je veux valider cette date sélectionnée dans asp.net en utilisant javascript ou contrôle de validation inbuild asp.net.asp.net date de validation avec trois liste déroulante

merci ......

+0

quel type de validation .. Ajoutez plus d'informations/ANTÉCÉDENTS sur ce que vous voulez valider. Avez-vous besoin de valider qu'un utilisateur doit choisir une valeur parmi les 3 listes déroulantes ou quoi ?? –

Répondre

0

Ceci est un code java script pour le format de la date de validation:

<script language="javascript" type="text/javascript"> 
     function ValidateDate(args) 
     { 
     var date=args.Value;   
     var arr=date.split('/'); 

     if(arr.length!=3) 
     { 
     args.IsValid=false; 
     return; 
     } 
     var day; 
     if(arr[1]=='08') 
     { 
     day=parseInt('8'); 
     } 
     else if(arr[1]=='09') 
     { 
     day=parseInt('9'); 
     } 
     else 
     { 
      day=parseInt(arr[1]); 
     }  
     var month;  
     if(arr[0]=='08') 
     { 
     month=parseInt('8'); 
     } 
     else if(arr[0]=='09') 
     { 
     month=parseInt('9'); 
     } 
     else 
     { 
      month=parseInt(arr[0]); 
     } 
     var year=parseInt(arr[2]); 
     var boolday=false; 
     var boolmonth=false; 
     var boolyear=false; 
     if(!isNaN(year)) 
     { 
     if(1800<year&&year<2100) 
      {  

      boolyear=true;    
      } 
     } 
     if(!isNaN(month)) 
     {  
      if(0<month&&month<13) 
      {  

      boolmonth=true; 
      } 
     } 
     if(!isNaN(day)) 
     { 
     var val=32; 
     if(boolmonth) 
     { 
      if(month==2) 
      { 
      if(boolyear) 
      { 
       if(year%4==0) 
       { 
       val=30; 
       } 
       else 
       { 
       val=29; 
       } 
      } 

      } 
      else if(month==4||month==6||month==11||month==9) 
      { 
      val=31 
      } 
     } 

     if(0<day&&day<val) 
     { 

     boolday=true; 
     } 
     } 


     if(boolyear&&boolmonth&&boolday) 
     { 

     args.IsValid=true; 
     } 
     else 
     { 
     args.IsValid=false; 
     } 

     } 
     </script> 

Et vous pouvez valider la date inscrite dans le 3-DropDownList par concaténer les 3 valeurs et il passe à la fonction

+0

C'est vraiment long pour ce qui peut être juste quelques courtes lignes de code. Vérifiez mon exemple, cela peut vous faire gagner du temps. –

0

l'utilisation d'un validateur personnalisé:

protected void dobCustomValidator_ServerValidate(object sender, ServerValidateEventArgs e) 
    { 
     CustomValidator validator = (CustomValidator) sender; 

     ddlDateofBirthDay = (DropDownList)validator.Parent.FindControl("ddlDateofBirthDay"); 
     ddlDateofBirthMonth = (DropDownList)validator.Parent.FindControl("ddlDateofBirthMonth"); 
     ddlDateofBirthYear = (DropDownList)validator.Parent.FindControl("ddlDateofBirthYear"); 

     if (ddlDateofBirthDay.SelectedIndex == 0 || ddlDateofBirthMonth.SelectedIndex == 0 || 
      ddlDateofBirthYear.SelectedIndex == 0) 
     { 
      e.IsValid = false; 
     } 
     else 
     { 
      string dateOfBirthString = ddlDateofBirthDay.SelectedItem.Value + "/" + dateTools.MonthNumber(ddlDateofBirthMonth.SelectedItem.Value) + 
             "/" + ddlDateofBirthYear.SelectedItem.Value; 
      try 
      { 
       DateTime.Parse(dateOfBirthString, Culture); 
      } 
      catch 
      { 
       e.IsValid = false; 
      } 
     } 
    } 
0

Voir ci-dessous . La fonction principale est isDate à laquelle vous pouvez passer le jour, le mois et l'année. Ce sont des fonctions javascript, donc il alerte un message pertinent et renvoie false.

Les jours en février calculeront le nombre de jours pour février pour l'année passée. DaysArray conserve un tableau du nombre de jours pour chaque mois.

var minYear=1900; 
var maxYear=2100; 

function daysInFebruary (year){ 
    // February has 29 days in any year evenly divisible by four, 
    // EXCEPT for centurial years which are not also divisible by 400. 
    return (((year % 4 == 0) && ((!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28); 
} 
function DaysArray(n) { 
    for (var i = 1; i <= n; i++) { 
     this[i] = 31 
     if (i==4 || i==6 || i==9 || i==11) {this[i] = 30} 
     if (i==2) {this[i] = 29} 
    } 
    return this 
} 

function isDate(strDay,strMonth,strYear){ 
    var daysInMonth = DaysArray(12) 

    if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1) 
    if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1) 
    for (var i = 1; i <= 3; i++) { 
     if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1) 
    } 
    month=parseInt(strMonth) 
    day=parseInt(strDay) 
    year=parseInt(strYr) 

    if (strMonth.length<1 || month<1 || month>12){ 
     alert("Please enter a valid month") 
     return false 
    } 

    if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){ 
     alert("Please enter a valid day") 
     return false 
    } 

    if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){ 
     alert("Please enter a valid 4 digit year between "+minYear+" and "+maxYear) 
     return false 
    } 


return true 
} 
0

Vous pouvez utiliser JavaScript pour charger une entrée cachée avec la valeur des trois listes déroulantes sur l'événement change-à-dire

hidDate.value = ddlDay.value + "/" + ddlMonth.value + "/" ddlYear.value; 

Ensuite, utilisez un contrôle de validation comparer avec le dataType mis à DateTime valider le caché contribution. Vous voudrez vous assurer que vous les listes déroulantes pour les valeurs et ne concattez les/en cas de besoin.

(Note: Ceci est pour seul concept et ne va pas être syntaxiquement correct)

0
// validate that the user made a selection other than default 
function isChosen(select) { 
    if (select.selectedIndex == 0) { 
     alert("Please make a choice from the list."); 
     return false; 
    } else { 
     return true; 
    } 
} 


function daysInFebruary (year){ 
// February has 29 days in any year evenly divisible by four, 
// EXCEPT for centurial years which are not also divisible by 400. 
return (((year % 4 == 0) && ((!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28); 
} 
function DaysArray(n) { 
for (var i = 1; i <= n; i++) { 
this[i] = 31 
if (i==4 || i==6 || i==9 || i==11) {this[i] = 30} 
if (i==2) {this[i] = 29} 
} 
return this 
} 

function focusElement(formName, elemName) { 
    var elem = document.forms[formName].elements[elemName]; 
    elem.focus(); 
    elem.select(); 
} 

function valid(dob1,dob2,dob3){ 
var daysInMonth = DaysArray(12) 
var date=dob1.value 
var month=dob2.value 
var year=dob3.value 
if((month==2 && date>daysInFebruary(year)) || date>daysInMonth[month]){ 
alert("Please enter a valid day") 
return false 
} 
return true 
} 

function validateForm(form) { 
if (isChosen(form.dob1)) { 
if (isChosen(form.dob2)) { 
    if (isChosen(form.dob3)) { 
    if(valid(form.dob1,form.dob2,form.dob3)){ 
document.frm.action="<%=contextPath%>/Conformation"; 
//"conformation" is for servelet mapping 
document.frm.submit(); 
} 
} 
} 
} 
return false; 
} 
</script> 

<script language="javascript"> 
function gotoAddResourceAction() 
{ 
validateForm(document.frm) 
} 
</script> 
</head> 

<body> 
<form name="frm" method="post"> 
<table width="100%" id='table1' border="0" cellspacing="2" cellpadding="2"> 
<tr><td width="40%" class="txt-label"> 
    <SPAN CLASS="txt-label">Date Of Birth (DOB)</SPAN><font color='red'> *</font>: 
    </td> 
    <td width="60%" class="txt-lable"> 
    <Select name="dob1"><option value="" selected>Date</option> 
    <option value="1" >1</option><option value="2" >2</option><option value="3">3</option><option value="4">4</option><option value="5">5</option><option value="6">6</option><option value="7">7</option><option value="8">8</option><option value="9">9</option><option value="10">10</option><option value="11">11</option><option value="12">12</option><option value="13">13</option><option value="14">14</option><option value="15">15</option><option value="16">16</option><option value="17">17</option><option value="18">18</option><option value="19">19</option><option value="20">20</option><option value="21">21</option><option value="22">22</option><option value="23">23</option><option value="24">24</option><option value="25">25</option><option value="26">26</option><option value="27">27</option><option value="28">28</option><option value="29">29</option><option value="30">30</option><option value="31">31</option></select> 
    <Select name="dob2"><option value="" selected>Month</option> 
    <option value="1" >January</option><option value="2" >February</option><option value="3">March</option><option value="4">April</option><option value="5">May</option><option value="6">June</option><option value="7">July</option><option value="8">August</option><option value="9">September</option><option value="10">October</option><option value="11">November</option><option value="12">December</option></select> 
    <Select name="dob3"><option value="" selected>Year</option> 
    <option value="1950" >1950</option><option value="1951" >1951</option><option value="1952">1952</option><option value="1953">1953</option><option value="1954">1954</option><option value="1955">1955</option><option value="1956">1956</option><option value="1957">1957</option><option value="1958">1958</option><option value="1959">1959</option><option value="1960">1960</option><option value="1961">1961</option><option value="1962">1962</option><option value="1963">1963</option><option value="1964">1964</option><option value="1965">1965</option><option value="1966">1966</option><option value="1967">1967</option><option value="1968">1968</option><option value="1969">1969</option><option value="1970">1970</option><option value="1971">1971</option><option value="1972">1972</option><option value="1973">1973</option><option value="1974">1974</option><option value="1975">1975</option><option value="1976">1976</option><option value="1977">1977</option><option value="1978">1978</option><option value="1979">1979</option><option value="1980">1980</option><option value="1981">1981</option><option value="1982">1982</option><option value="1983">1983</option><option value="1984">1984</option><option value="1985">1985</option><option value="1986">1986</option> 
    <option value="1987">1987</option><option value="1988">1988</option><option value="1989">1989</option><option value="1990">1990</option><option value="1991">1991</option><option value="1992">1992</option><option value="1993">1993</option><option value="1994">1994</option><option value="1995">1995</option><option value="1996">1996</option><option value="1997">1997</option><option value="1998">1998</option><option value="1999">1999</option><option value="2011">2011</option></select> 
    </td></tr> 
<table width="100%" border="0" align="center"> 
    <tr><td> 
    <input type="button" name="SubmitForm" value="Submit" class="button" onMouseOver=(this.className='buttonover') onMouseOut=(this.className='button') onClick="gotoAddResourceAction()"> 
    </td></tr> 
    </table> 
Questions connexes