2013-11-24 5 views
-1

Надеюсь, что я буду размещать сейчас, будет иметь больше смысла. так что это то, что я пытаюсь закодировать в javascript, и такая же ошибка всегда возникает, пытались какое-то время понять это, но я не могу найти проблему.дата "валидация" с помощью javascript

function isLeap(type) 
    { 
     var yr; 
     try{ 
     yr=document.getElementById('yearof' + type).value; 
      try{ 
      yr = parseInt(yr); 
       if ((yr%4) == 0){ 
        if (yr%100 == 0){ 
         if (yr%400 != 0){ 
          alert("Not Leap"); 
          return "false"; 
         } 
         if (yr%400 == 0){ 
          alert("Leap"); 
          return "true"; 
         } 
        } 
        if (yr%100 != 0){ 
         alert("Leap"); 
         return "true"; 
        } 
       } 
       if ((yr%4) != 0){ 
        alert("Not Leap"); 
        return "false"; 
       } 
      } 
      catch(e){ 
      } 
     } 
     catch(e){ 
      break; 
     } 
    } 

function monthDays(type){ 
     var month; 
     var days; 
     try{ 
     month=document.getElementById('monthof' + type).value; 
      try{ 
      month = parseInt(month); 
       if(month%2 != 0 || month == 8){ 
        days= 31; 
       } 
       else{ 
        if(month != 2){ 
         days = 30; 
        } 
        else{ 
         if(isLeap() == true){ 
          days = 29; 
         } 
         else{ 
          days = 28; 
         } 
        } 
       } 

       var mod=document.getElementById('dayof' + type); 
       for(var i=1; i<13; i++){ 
        var option=document.createElement("option"); 
        option.text=i.toString(); 
        try{ 
         // for IE earlier than version 8 
         mob.add(option,mob.options[null]); 
        } 
        catch (e){ 
         mob.add(option,null); 
        } 
       } 
      } 
      catch(e){ 
      } 
     } 
     catch(e){ 
      break; 
     } 
} 

и это HTML

<select id="monthofbirthchild" class="month" name="monthofbirthchild" onchange="monthDays("birthchild")"> 
            <option value="MM">MM</option> 
            </select> 
<select id="monthofbirth" class="month" name="monthofbirth" onchange="monthDays("birth")"> 
             <option value="MM">MM</option> 
            </select> 

я передаю либо «рождение» или «birthchild» так, чтобы соответствующая либо для ребенка или нормальный может быть отредактирована.

+0

Можете ли вы разместить все, что вы пробовали до сих пор? – tewathia

+1

Предотвращение использования веб-программиста с помощью jQuery - это то же самое, что препятствовать тому, чтобы компания, занимающаяся изготовлением автомобилей, использовала колеса. Это глупо, и это неправильно. –

+0

@ShadowWizard, если вам действительно нужно сделать аналогию с автомобилем, это гораздо ближе к рулевому управлению с усилителем, чем к _wheels_. Веб без jQuery ничего не пропускает; это просто сложнее управлять. (Посмотрите, что я там сделал?) – Mathletics

ответ

1

Вы можете использовать Date объект, чтобы получить последнюю дату месяца (что длина месяца, а):

daysInMonth = new Date(year, month, 0).getDate(); 
// daysInMonth = new Date(2012, 2, 0).getDate(); // --> 29 

На самом деле 2 март в примере. Однако в течение месяца не существует 0-го дня, поэтому возвращается последняя дата предыдущего месяца.


EDIT

Теперь, когда видим также некоторый код твоего ...

Вы имеете цитируемости ошибку в онлайн eventhandlers. Вы должны поместить их таким образом:

onchange="monthDays('birth');" 

Если я могу угадать остальной HTML правильно, что (ужасный) JS код может быть заменен простой функцией ниже.

function monthDays (type) { 
    var month = parseInt(document.getElementById('monthof' + type).value, 10), 
     days = new Date(document.getElementById('yearof' + type).value, month + 1, 0).getDate(), 
     mod = document.getElementById('dayof' + type), 
     i; 
    mod.length = days; 
    for(i = 0; i < days; i++) { 
     mod[i].value = i + 1; 
     mod[i].text = i + 1; 
    } 
} 

A live demo at jsFiddle.

+0

@ user3023347 Это не то, о чем вы просите?Я извлек некоторые (упрощенные) функции из своего собственного ["DateHandler"] (http://jsfiddle.net/NhqcC/) для вас, может быть, это дает вам некоторые идеи ... – Teemu

+0

спасибо, что это именно то, что мне нужно это работать, чувак, я люблю тебя. извините, можете повысить ваш ответ, но предыдущий вопрос отправил мой rep down ^^. еще раз спасибо – mikkuslice

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