Подтвердить что ты не робот

Заполнение поля ввода даты с помощью Javascript

Я пытаюсь предварительно ввести дату в поле ввода даты "html", но игнорирует значения, которые я пытаюсь передать:

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

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

Я также пробовал передать объект даты в виде строки

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

Когда я открываю форму, поле даты пуста. Если я удалю тэг типа = "дата", значение будет отображаться как строка, но тогда у меня нет доступа к datepicker. Как я предварительно заполняю ввод даты и все еще использую datepicker? Я в тупике.

Спасибо.

4b9b3361

Ответ 1

Он должен быть установлен в формате 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/

Ответ 2

Спасибо j08691. Эта ссылка была ответом.

Другим, кто борется, как я, когда говорят, что вход "yyyy-mm-dd", MEAN it!

У вас ДОЛЖНО иметь 4 цифры за год. Вы ДОЛЖНЫ иметь тире и пробелы. У вас ДОЛЖЕН иметь 2 цифры для дня и месяца.

В моем примере myDate.getMonth за январь вернет только "1" (на самом деле он возвращает "0", потому что по какой-то причине javascript подсчитывает месяцы от 0-11). Чтобы получить это право, я должен был сделать следующее:

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 числа месяца! LOL

Ответ 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;

Если это поле datetime, которое вы изменяете (в отличие от даты), не забудьте добавить время T00:00 или изменить подстроку на 16 символов, например:

//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;

Ответ 4

Этот ниже код заполняет локальную дату. Принимаемый ответ заполняет дату UTC.

  var date = new Date();
  field = document.querySelector('#date-id');
  var day = date.getDate();
  if(day<10){ day="0"+day;}

  var month = date.getMonth()+1;
  if(month<10){ month="0"+month;}

  field.value = date.getFullYear()+"-"+month+"-"+day;