asp.net日期验证有三个下拉列表

时间:2010-01-20 10:33:35

标签: javascript

我有三个日期月份和年份下拉列表现在我想使用javascript或inbuild asp.net验证控件在asp.net中验证此选定日期。

感谢......

5 个答案:

答案 0 :(得分:0)

这是验证日期格式的java脚本代码:

<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个值并将其传递给函数来验证在3-DropDownList中输入的日期

答案 1 :(得分: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;
            }
        }
    }

答案 2 :(得分:0)

见下文。主要功能是isDate,您可以传递日,月和年。这些是javascript函数,因此它会警告相关消息并返回false。

日期2月将计算过去一年的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
}

答案 3 :(得分:0)

您可以使用JavaScript加载隐藏输入,其中包含更改事件中三个下拉列表的值,即

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

然后使用比较验证控件,将dataType设置为DateTime验证隐藏的输入。你需要确保你输入数值的下拉菜单,并且只在必要时连接./ / p>

(注意:这仅用于概念而不是语法正确)

答案 4 :(得分: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>