dropdownlist值未通过.net

dropdownlist值未通过.net,.net,drop-down-menu,javascript,.net,Drop Down Menu,Javascript,我正在开发一个已经构建的程序,其中包含很多类和JScript。问题是代码有3个dropdownlist的月、日、年。我需要删除日期1和passa静态“01”值。下面是用javascript验证日期的代码- function Validate_date(sender, args) { var m = document.getElementById(sender.id.replace(/cv/, "m")); var d = docum

我正在开发一个已经构建的程序,其中包含很多类和JScript。问题是代码有3个dropdownlist的月、日、年。我需要删除日期1和passa静态“01”值。下面是用javascript验证日期的代码-

        function Validate_date(sender, args) {
            var m = document.getElementById(sender.id.replace(/cv/, "m"));
            var d = document.getElementById(sender.id.replace(/cv/, "d"));
            var y = document.getElementById(sender.id.replace(/cv/, "y"));
            if (isDate(m.value, d.value, y.value)){
                var myDate = new Date();
                myDate.setFullYear(y.value, m.value - 1, d.value);
                var today = new Date();
                today.setDate(today.getDate()-30);
                args.IsValid = (myDate >= today);                
            }
            else{
                args.IsValid = false;
            }            
        } 
现在是isdate函数-

function isDate(strMonth, strDay, strYear) {
    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 (strYear.charAt(0) == "0" && strYear.length > 1) strYear = strYear.substring(1); }
    month = parseInt(strMonth);
    day = parseInt(strDay);
    year = parseInt(strYear);
    if (strYear.length != 4 || year == 0) return false;
    if (strMonth.length < 1 || month < 1 || month > 12) return false;
    if (strDay.length < 1 || day < 1 || day > 31 || (month == 2 && day > daysInFebruary(year)) || day > DaysArray(12)[month]) return false;
    return true;
}
函数isDate(strMonth、strDay、strYear){
如果(strDay.charAt(0)=“0”&&strDay.length>1)strDay=strDay.substring(1);
如果(strMonth.charAt(0)=“0”&&strMonth.length>1)strMonth=strMonth.substring(1);
对于(vari=1;i1)strYear=strYear.substring(1);}
月=parseInt(strMonth);
day=parseInt(标准日);
年份=parseInt(strYear);
如果(strYear.length!=4 | | year==0)返回false;
if(strMonth.length<1 | | | month<1 | | month>12)返回false;
如果(strDay.length<1 | | | day<1 | | | day>31 | | |(月==2&&day>daysin二月(年))| | day>DaysArray(12)[月])返回false;
返回true;
}
问题是当我给value=“01”时,dropdownlist会在这行崩溃-

if (isDate(m.value, d.value, y.value)){ in the validate function

dropdownlist code -
<asp:DropDownList ID="EXP_d" runat="server" visible="false">
    <asp:ListItem Value="01">DD<ListItem>
<asp:DropDownList>
验证函数中的if(isDate(m.value,d.value,y.value)){ 下拉列表代码- DD
如何从EXP_d(date)dropdownlist传递静态值01?

您可以用以下方法替换
isDate
方法:

function isDate(strMonth, strDay, strYear) {
    var month = parseInt(strMonth, 10) - 1;
    var day = parseInt(strDay, 10);
    var year = parseInt(strYear, 10);

    var date = new Date(year, month, day);

    return date.getFullYear() === year
        && date.getMonth() === month
        && date.getDate() === day;
}

在控件上设置visible=“false”意味着ASP.Net不会呈现该控件。因此,
document.getElementById(sender.id.replace(/cv/,“d”))
将返回null。下拉控件可以完全删除,但这会影响后面的代码。您可以使用
style='display:none'
将下拉列表包装在
中以隐藏它,但允许javascript和服务器端代码使用该控件。

为什么您的下拉列表中有一个名为
DD