13

月と年を保持する2つのドロップダウンリストがあります...

$(document).ready(function () {               
     $('#Months option:eq(' + (new Date).getMonth() + ')').prop('selected', true);
      alert((new Date).getMonth());        
     $('#Years option:eq(' + (new Date).getFullYear() + ')').prop('selected', true);
      alert((new Date).getFullYear());
});

上記のように JQuery スクリプトを作成して、プログラムを実行するときにドロップダウンの選択値が現在の月と年でなければならないようにしました。

しかし、私がプログラムを実行すると..アラートは7と2012を与えます..しかし、私の見解では、現在の月が選択されていますが、現在の年はなぜではありませんか?? 現在の年を選択するドロップダウンを作成するにはどうすればよいですか??

4

3 に答える 3

28

jQuery

var d = new Date(),

    n = d.getMonth(),

    y = d.getFullYear();

$('#months option:eq('+n+')').prop('selected', true);

$('#years option[value="'+y+'"]').prop('selected', true);

HTML

​<select id="months">
    <option value="1">January</option>
    <option value="2">February</option>
    <option value="3">March</option>
    <option value="4">April</option>
    <option value="5">May</option>
    <option value="6">June</option>
    <option value="7">July</option>
    <option value="8">August</option>
    <option value="9">September</option>
    <option value="10">October</option>
    <option value="11">November</option>
    <option value="12">December</option>
</select>
<select id="years">
    <option value="2011">2011</option>
    <option value="2012">2012</option>
    <option value="2013">2013</option>
</select>

デモ

于 2012-08-26T09:59:17.877 に答える
2

月は、0 (1 月) から 11 (12 月) までの整数として返されます。http ://www.java2s.com/Tutorial/JavaScript/0240__Date/DategetMonth.htm を参照してください。

したがって、現在の月 (8 月) は 7 を返します。通常の月のインデックス (1 ~ 12 を意味する) と一致させるには、 を使用します((new Date()).getMonth() + 1)

コメントで指摘されているように、私は問題を誤解していました。月のゼロベースの配列と jquery セレクター:eq()もゼロベースであるため、月は正しいです。

ただし、他の回答で指摘されているように、返される年:eq()は jquery セレクターの n 番目の要素と一致しません。提案どおりに使用option[value=' + (new Date).getFullYear() + ')'する方が良いでしょう。

于 2012-08-26T09:57:55.373 に答える
1

jQuery のセレクターの:eq(N)部分は、一致したセット (その時点で ) の N 番目の要素 (0 番目を含む) を選択します#Years option。したがって、ドロップダウンに 2012 年以降のオプションがない限りYears、これは機能しません。

値に基づいてオプションを選択することをお勧めします:option[value=2012]または

を使用するだけ$("#Years").val(2012)で、より読みやすく、コードが少なくなります。

于 2012-08-26T09:59:31.290 に答える