2010-01-07 46 views
0

我正在制作一个已编译的程序,其中包含许多类和jscripts。问题是代码有3个dropdownlist的月份,日期,年份。我需要删除日期一和passa静态“01”值。这里是为在javascript验证日期代码 -dropdownlist值未通过.net

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

问题是下拉列表当我给值=“01”,它崩溃在这条线 -

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> 

我怎样才能从EXP_d(日期)dropdownlist传递静态值01?

+0

为什么您的下拉列表中有一个名为'DD'的项目? – SLaks 2010-01-07 20:33:10

回答

0

您可以用下面的更换你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; 
} 
0

在控制设置可见=“假”是指ASP.Net不会呈现控件。因此,document.getElementById(sender.id.replace(/cv/, "d"))将返回空值。下拉控件可以完全删除,但这对后面的代码有影响。您可以将<div>中的下拉列表与style='display:none'一起隐藏,但允许该控件可用于JavaScript和服务器端代码。