2010-01-07 49 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和服務器端代碼。