2012-03-21 72 views
0

我有兩個輸入字段與date1和date2.Below這兩個字段我需要一個按鈕,當我按它,將創建一個輸入字段的數目等於數字在兩個日期字段之間的月份。 例如我有date1 = 2012-03-21和dat2 = 2012-06-21。它應該產生3個輸入字段 你能幫我解決這個問題嗎?JavaScript添加輸入字段的數量等於月的數量

+0

這是一個非常有趣的問題。你在使用任何庫嗎? jQuery的? date.js? – Patricia 2012-03-21 19:11:03

回答

0

您可以根據日期的不同運行循環。在僞代碼,它會像

var difference = month2 - month1; 

for(x=0;x<difference,x++){ 
    add inputfield; 
} 
+0

對我來說這將是非常有用的一個完整的答案,因爲我不知道JavaScript非常好 – bizkit1 2012-03-21 19:16:06

+0

他將如何給你的代碼幫助你學習? – jzworkman 2012-03-21 19:21:18

+0

請查看http://stackoverflow.com/questions/4944750/how-to-subtract-date-time-in-javascript或http://stackoverflow.com/questions/674721/how-do-i-subtract-分鐘從JavaScript中的日期或http://www.javascriptkit.com/javatutors/datedifference.shtml或搜索谷歌的JavaScript日期扣除一噸的結果。 – 2012-03-21 19:22:26

1

假設的HTML看起來是這樣的:

<div id="dateRange"> 
    <input type="text" id="startDate"> 
    <input type="text" id="endDate"> 
</div> 
<div id="monthlyEntries"/> 

現在,一個月是不是幾天的球衣號碼(「30天內九月,四月,六月和十一月......「),所以我猜測日期部分沒有關係。

然後,JavaScript來上改變(或點擊按鈕,或其他)打電話,會是這個樣子:

function buildMonthlyEntries() { 
    var startDate = new Date(document.getElementById('startDate').value); 
    var endDate = new Date(document.getElementById('endDate').value); 
    if(startDate == "Invalid Date" || endDate == "Invalid Date") { return null; } 
    var entryCount = (endDate.getMonth() + endDate.getFullYear()*12) - (startDate.getMonth() + startDate.getFullYear()*12); 
    var monthlyEntries = document.getElementById('monthlyEntries'); 
    monthlyEntries.innerHTML = ""; 
    for(var i = 0; i < entryCount; i++) { 
     var textElement = document.createElement('input'); 
     textElement.setAttribute('type', 'text'); 
     textElement.setAttribute('id', 'entry' + i); 
     monthlyEntries.appendChild(textElement); 
    } 
    return null; 
} 
+0

是的,它可以工作。非常感謝你! – bizkit1 2012-03-21 19:38:17

+0

一個問題,如果我添加不同的年份,它不會生成corect輸入字段數。這個腳本可以修改,以計算是否我改變了一年?謝謝! – bizkit1 2012-03-22 07:08:08

+0

對,忘了。編輯代碼...修正! – 2012-03-22 15:54:44