Как вы программно очищаете поля даты HTML5?

Я ищу способ программно очистить поля даты HTML5 с помощью Javascript (в частности, jQuery). До сих пор я пробовал два метода, которые я считал очевидными:

$('input[type=date]').val('');

$('input[type=date]').val('0000-00-00');

Но ни один из них не работает по последней версии Chrome для ПК, по крайней мере, еще не пробовал их с другими браузерами или платформами. Есть ли вызов API или что-то, что может очищать поля даты в кросс-браузере? Решения, которые я искал, такие как this, требуют от пользователя очистить поле даты, тогда как мне нужно, чтобы это было сделано программно.

Ответ 1

$("input[type=date]").val("") у меня работает в хроме. Устанавливает поле ввода в дд/мм/гггг.

Может быть, это браузер конкретного. Большинство браузеров поддерживают только частично или вообще не поддерживают этот ввод: http://caniuse.com/input-datetime

Ответ 2

document.getElementById("datePicker").valueAsDate = null;

эта строка кода работает с моим браузером (хром), не тестировалась в других браузерах

Ответ 3

Вы можете восстановить местозаполнитель,

$('input[type=date]')[0].valueAsDate = '';

Ответ 4

эта строка работает с моим браузером (хром, последняя версия)

$('input[type=date]')[0].value = 0;

Ответ 5

Можете ли вы использовать функцию reset вашей формы? Вы можете сделать это с помощью кнопки reset:

      <button type="reset" value="Reset">Reset</button>

или программно:

      $("#yourFormId").reset();

или

      $('input[type=date]').reset();

Ответ 6

Используйте собственное свойство defaultValue:

$('input[type=date]').each( function resetDate(){
  this.value = this.defaultValue;
} );

Это работает до тех пор, пока форма не имеет начального value указанного как показано в этой скрипте.

Ответ 7

Это решение проверяет, существует ли значение по умолчанию и, если это так, использует его для ввода reset. В противном случае он очищает входные данные, обновляя значение и значениеAsDate.

Информация о значенииAsDate доступна по адресу: w3c.org.

var dateEl = element.find('input#myDateInput[type="date"]');
dateEl[0].value = ('undefined' !== typeof dateEl[0].defaultValue) ? dateEl[0].defaultValue : '';
if (dateEl[0].value !== '') {
    dateEl[0].valueAsDate = new Date(dateEl[0].value);
} else {
    dateEl[0].valueAsDate = null;
}

Ответ 8

Если вы не можете очистить поле даты, это также может зависеть от ошибки браузера. Я трачу некоторое время, пока не узнаю, что вы не можете сбросить дату в Firefox, если контроль даты отключен. Смотрите: https://bugzilla.mozilla.org/show_bug.cgi?id=1465979

Без ошибки я могу очистить дату следующим образом:

document.getElementById("myDate").value = "";