2010-01-07 10 views
0

나는 많은 클래스와 jscript가있는 이미 빌드 된 프로그램을 만들고 있습니다. 문제는 코드는 3 dropdownlist의 달, 날짜, 년있다. 나는 날짜 1과 패서 정적 "01"값을 제거해야합니다. 지금dropdownlist 값이 전달되지 않았습니다.

 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 (날짜) 드롭 다운리스트에서 정적 값 01을 전달할 수 있습니까?

+0

드롭 다운 목록에 'DD'라는 항목이있는 이유는 무엇입니까? – SLaks

답변

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

을 컨트롤을 볼 수 = "false"로 설정하면 ASP.Net 컨트롤을 렌더링하지 않습니다 것을 의미합니다. 따라서 document.getElementById(sender.id.replace(/cv/, "d"))은 null을 반환합니다. 드롭 다운 컨트롤은 완전히 제거 될 수 있지만 코드 숨김에 영향을 미칩니다. <div>의 드롭 다운을 style='display:none'으로 감싸서 숨길 수 있지만 컨트롤을 자바 스크립트 및 서버 측 코드에서 사용할 수 있습니다.

관련 문제