2014-04-09 47 views
0

我有3下拉框基本形式獲取的天數選擇

<form> 
<select name="year" id="y"> 
<option value="2014">2014</option> 
... 
<option value="1949">1949</option> 
</select> 
<select name="month" id="m"> 
<option value="01">JAN</option> 
... 
<option value="12">DIC</option> 
</select> 
<select name="day" id="d"> 
<option value="1">1</option> 
... 
<option value="31">31</option> 
</select> 
<input type="text" name="age"> 
</form> 

這樣的想法是: 獲取個月,這樣的日子選擇的選項可以填充,1 ,2,3,4,5 ......等等......然後一旦我有年,月和日,我需要做一個計算,以便我可以得到年齡,計算的價值/結果將去年齡的輸入框... 現在,多年來必須不少於1年,不超過69或70歲,我已經這樣做了...:

function getYears() 
    { 
     d = new Date(); 
     curr_year = d.getFullYear(); 

     for(i = 0; i < 70; i++) 
     { 
      document.getElementById('y').options[i] = new Option(curr_year-i,curr_year-i); 
     } 
    } 

使用該代碼,我可以填充一年中的選項......並使用下一個代碼,我可以獲得每月選擇的天數,但不工作...

這不是因爲工作,如果我選擇今年1月,顯示31天在天<select>,但如果我那麼對於一個月改變它會不斷表示從第1選擇的月數...

function obtenDias(v) { 
    var select = document.getElementById("d"); 
    switch(v) 
    { 
     case "01": ed = 31;break; 
     case "02": ed = 29;break; 
     case "03": ed = 31;break; 
     case "04": ed = 31;break; 
     case "05": ed = 31;break; 
     case "06": ed = 31;break; 
     case "07": ed = 31;break; 
     case "08": ed = 31;break; 
     case "09": ed = 31;break; 
     case "10": ed = 31;break; 
     case "11": ed = 31;break; 
     case "12": ed = 31;break; 
    } 
    for(i=1;i<=ed;i++) 
    { 
     select.options[i] = new Option(i, i, true, false); 
    } 
} 

至於計算,以獲得選擇的年齡基準......好吧,我沒有線索......我可以得到當前日期減去選定的一年......類似的東西..它不需要100%確切。 ..

+0

它會返回沒有特別的月份和年份 ******* 功能daysInMonth(月,年)的天{ var dd = new Date(year,month,0); return dd.getDate();} **** – Syed

回答

1

這是因爲您沒有清除舊的選項。

因此,對於Jan選擇,您創建了31個選項。但是對於二月份的選擇,您正在更新29個選項,仍然保留第30和第31個選項。因此,刪除多餘的選項或在重新填充之前只刪除所有選項。

試試這個重新填充你的選擇爲天列表前:

while(select.options.length > 0){ 
    selection.options.remove(0); 
} 
+0

不錯,我知道我不得不這樣做,就像在PHP重置變量......現在我需要計算年齡...謝謝。 – Tanker