2010-01-07 2 views
0

Я работаю над уже построенной программой с большим количеством классов и jscripts. проблема заключается в том, что в коде есть три месяца, дата, год. Мне нужно удалить дату 1 и передать статическое значение «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; 
} 

проблема для DropDownList, когда я дать значение = "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> 

Как я могу передать статическое значение 01 из раскрывающегося списка EXP_d (date)?

+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

Настройка Visible = «ложь» на средства управления ASP.Net не будет оказывать контроль. Поэтому document.getElementById(sender.id.replace(/cv/, "d")) вернет значение null. Выпадающий элемент управления можно полностью удалить, но это имеет последствия для кода. Вы можете обернуть выпадающее меню в <div> с помощью style='display:none', чтобы скрыть его, но позволить элементу управления быть доступным для javascript и кода на стороне сервера.

Смежные вопросы