2010-01-20 2 views
4

У меня есть три раскрывающихся списка для дня месяца и года. Теперь я хочу проверить эту выбранную дату в asp.net с помощью javascript или inbuild контроля проверки asp.net.asp.net date validation с тремя выпадающими списками

благодаря ......

+0

какая проверка .. Добавить больше информации/Backgroud на то, что вы хотите проверить. Вам нужно подтвердить, что пользователь должен выбрать значение из всех 3 выпадающих списков или что? –

ответ

0

Это код Java Script для формата даты Validate:

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

И вы можете проверить дату, введенный в 3-DropDownList с помощью concatinate 3 значений и передав его функции

+0

Это действительно длинный ветер, что может быть всего лишь несколькими короткими строками кода. Проверьте мой пример, это может сэкономить некоторое время. –

0

Использование пользовательского валидатора:

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

ниже , Основная функция isDate, с которой вы можете пройти день, месяц и год. Это javascript-функции, поэтому он предупреждает соответствующее сообщение и возвращает false.

DaysInFebruary рассчитает количество дней для feb за год, прошедший.

В DaysArray хранится массив из числа дней для каждого месяца.

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

Вы можете использовать JavaScript, чтобы загрузить скрытый вход со значением три выпадающих на событии изменения т.е.

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

Затем с помощью элемента управления проверки сравнения с DATATYPE, установленной в DateTime проверяющей скрытой вход. Вы захотите убедиться, что вы выпадаете для значений и только concat the/'s при необходимости.

(Примечание: Это для концепции только и не будет синтаксически правильно)

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> 
Смежные вопросы