2013-03-11 39 views
1

我想要在表單中自動選擇月份,日期和年份。我確信這很簡單,但我對Javascript很不熟悉。在下面的代碼中,月份選擇工作正常,但一天總是實際日的+1,而年份根本不工作。如果有人能幫助它將非常感激!謝謝!Javascript日/月/年進入表格

<form name="form" action="b.html" method="post"> 
    <select id="month" name="month"> 
     <option id="1" value="January">January</option> 
     <option id="2" value="February">February</option> 
     <option id="3" value="March">March</option> 
     <option id="4" value="April">April</option> 
     <option id="5" value="May">May</option> 
     <option id="6" value="June">June</option> 
     <option id="7" value="July">July</option> 
     <option id="8" value="August">August</option> 
     <option id="9" value="September">September</option> 
     <option id="10" value="October">October</option> 
     <option id="11" value="November">November</option> 
     <option id="12" value="December">December</option> 
    </select> 
    /
    <select id="day" name="day"> 
     <option id="1" value="1">1</option> 
     <option id="2" value="2">2</option> 
     <option id="3" value="3">3</option> 
     <option id="4" value="4">4</option> 
     <option id="5" value="5">5</option> 
     <option id="6" value="6">6</option> 
     <option id="7" value="7">7</option> 
     <option id="8" value="8">8</option> 
     <option id="9" value="9">9</option> 
     <option id="10" value="10">10</option> 
     <option id="11" value="11">11</option> 
     <option id="12" value="12">12</option> 
     <option id="13" value="13">13</option> 
     <option id="14" value="14">14</option> 
     <option id="15" value="15">15</option> 
     <option id="16" value="16">16</option> 
     <option id="17" value="17">17</option> 
     <option id="18" value="18">18</option> 
     <option id="19" value="19">19</option> 
     <option id="20" value="20">20</option> 
     <option id="21" value="21">21</option> 
     <option id="22" value="22">22</option> 
     <option id="23" value="23">23</option> 
     <option id="24" value="24">24</option> 
     <option id="25" value="25">25</option> 
     <option id="26" value="26">26</option> 
     <option id="27" value="27">27</option> 
     <option id="28" value="28">28</option> 
     <option id="29" value="29">29</option> 
     <option id="30" value="30">30</option> 
     <option id="31" value="31">31</option> 
    </select> 
    /
    <select id="year" name="year"> 
     <option id="2012" value="2012">2012</option> 
     <option id="2013" value="2013">2013</option> 
     <option id="2014" value="2014">2014</option> 
     <option id="2015" value="2015">2015</option> 
     <option id="2016" value="2016">2016</option> 
     <option id="2017" value="2013">2017</option> 
     <option id="2018" value="2014">2018</option> 
     <option id="2019" value="2015">2019</option> 
     <option id="2020" value="2016">2020</option> 
    </select> 

    <script> 
    var d = new Date(); 
    var month = d.getMonth(); 
    var day = d.getDate(); 
    var year = d.getFullYear(); 
    document.form.month[month].selected = month; 
    document.form.day[day].selected = day; 
    document.form.year[year].selected = year; 
    </script> 
</form> 
+0

什麼是你的代碼錯誤? – powtac 2013-03-11 17:58:09

+2

「不工作」是一個足夠的問題描述。 – 2013-03-11 17:58:38

+0

我從來不喜歡用'select'來進行日期管理。允許像2月31日那樣的日期很容易。 – 2013-03-11 18:00:07

回答

-2

您正嘗試通過各自的索引訪問元素。當您訪問月份時,它會顯示正確的月份,這是巧合,因爲1月份的getMonth()返回0。當您選擇第三個月(索引= 2)時,它正確選擇March作爲index=2的元素。

對於日期和年份,我改爲將您的代碼更改爲.value。你不能這樣做一個月,因爲你使用的值是一月,二月,三月等,而不是它們的指數。

<script> 
    var d = new Date(); 
    var month = d.getMonth(); 
    var day = d.getDate(); 
    var year = d.getFullYear(); 
    document.form.month.options[month].selected = true; 
    document.form.day.value = day; 
    document.form.year.value = year; 
</script> 
+0

感謝您和其他已回答問題的人! – Matt 2013-03-11 18:29:43

+0

這個選擇的答案是越野車,它將一個布爾值設置爲一個數字。一月會發生什麼?它失敗!!!! -1 – epascarello 2013-03-11 19:19:10

+0

它已經修復:) – rationalboss 2013-03-11 23:43:03

1

你有衝突的ID! ID是頁面上的單數值。 Selected是一個布爾值,你將它設置爲一個數字。

擺脫對IDS,

var d = new Date(); 
var month = d.getMonth(); 
var day = d.getDate(); 
var year = d.getFullYear(); 
document.form.month.options[month].selected = true; 
document.form.day.options[day-1].selected = true; 
document.form.year.options[year-2012].selected = true; 
+0

例如:http://jsfiddle.net/Ym4VM/ – epascarello 2013-03-11 18:09:11

+0

我應該提到上面的代碼在選項的基於零的索引上工作。月份是基於零的,所以我們不需要減去一個。需要從一天中減去一個以使該零爲基礎。最後減去第一年可能會使該年度爲零。 – epascarello 2013-03-11 19:18:22

1

此代碼:

var day = d.getDate(); 
... 
document.form.year[year].selected = true; 

應該

var day = d.getDate()-1; 
... 
document.form.year[year - 2012].selected = true; 

當天必須減去1,因爲這一部分:document.form.day[day]是一個數組,記住數組從0開始,但getDate()從1開始。

爲什麼你不需要在月份部分減1?因爲JavaScript Date Object's month index begins with 0!

+0

@Steve:你先試過我的代碼嗎? – 2013-03-11 18:08:34

+0

你爲什麼要設置布爾值爲數字? – epascarello 2013-03-11 18:09:57

+0

我想這將有助於解釋爲什麼你需要減去1.你的代碼看起來像返回的日期不正確,而你正在嘗試調整索引偏移量。這樣@epascarello的答案使它更清潔。 – Steve 2013-03-11 18:12:23

0

select-element中的選項由索引[0]開始訪問。

,導致:

document.form.month[0].value is 'January' 
document.form.day[0].value is 1; 
document.form.year[0].selected is 2012; 

一定要正確計算您的索引或使用你的項目的價值指標:

var year = d.getFullYear(); 
document.getElementById('year').value = year; 

並請從選項中刪除了「id」屬性。在文檔中使用相同的ID兩次是不好的做法。它應該爲元素的獨特

相關問題