25

日付をhtmlの「日付」入力フィールドに事前入力しようとしていますが、渡そうとしている値が無視されます。

<html>
...
<input id='date' type='date'>
...
</html>

<script>
...
var myDate = new Date();
$("#date").val(myDate);
...

また、日付オブジェクトを文字列として渡してみました

var myDate = new Date().toDateString();
$("#date").val(myDate);

フォームを開くと、日付フィールドが空白になっています。type = "date"タグを削除すると、値は文字列として表示されますが、日付ピッカーにアクセスできません。日付入力を事前入力し、それでも日付ピッカーを使用するにはどうすればよいですか?私は困惑しています。

ありがとう。

4

6 に答える 6

55

ISO 形式で設定する必要があります。

(function () {
    var date = new Date().toISOString().substring(0, 10),
        field = document.querySelector('#date');
    field.value = date;
    console.log(field.value);

})()

http://jsfiddle.net/GZ46K/

于 2013-01-09T21:01:52.187 に答える
7

ありがとうj08691。そのリンクが答えでした。

私のように苦労している他の人にとって、入力が「yyyy-mm-dd」であると彼らが言うとき、それを意味します!

年には4桁の数字が必要です。ダッシュが必要で、スペースはありません。日と月は2桁である必要があります。

私の例では、1月のmyDate.getMonthは「1」のみを返します(何らかの理由でjavascriptは0から11までの月をカウントするため、実際には「0」を返します)。これを正しくするために、私は次のことをしなければなりませんでした:

var myDate, day, month, year, date;
myDate = new Date();
day = myDate.getDate();
if (day <10)
  day = "0" + day;
month = myDate.getMonth() + 1;
if (month < 10)
  month = "0" + month;
year = myDate.getYear();
date = year + "-" + month + "-" + day;
$("#date").val(date);

これが、10月前または月の10日前にテストしたように、他の人が時間を無駄にしないようにするのに役立つことを願っています。笑

于 2013-01-09T21:16:20.567 に答える
3

これはRobin Drexlersに基づく回答ですが、現地時間です。

//Get the local date in ISO format
var date = new Date();
date.setMinutes(date.getMinutes() - date.getTimezoneOffset());
var datestr = date.toISOString().substring(0, 10);

//Set the field value
var field = document.querySelector('#date');
field.value = datestr;

(日付だけではなく) 変更する日時フィールドの場合は、 time を追加するか、部分文字列を 16 文字に変更することを忘れないでくださいT00:00。たとえば、次のようになります。

//Get the local date and time in ISO format
var date = new Date();
date.setMinutes(date.getMinutes() - date.getTimezoneOffset());
var datestr = date.toISOString().substring(0, 16);

//Set the field value
var field = document.querySelector('#datetime');
field.value = datestr;
于 2016-07-15T01:05:02.473 に答える