Как установить значение даты по умолчанию для типа ввода сегодня? - PullRequest
351 голосов
/ 08 августа 2011

Типы ввода HTML5 великолепны, новый встроенный инструмент выбора даты в Opera очень прост, и Chrome, по крайней мере, поддерживает новый тип ввода с помощью вращающегося колеса.

Но есть ли способ установить значение по умолчанию для поля даты на сегодняшнюю дату? С помощью Opera я могу выбрать «Сегодня» из палитры дат, и как только я нажимаю на любую из кнопок шагов в Chrome, она увеличивается / уменьшается по сравнению с сегодняшней датой.

Я не стесняюсь кодировать решение этой незначительной проблемы, но мне кажется глупым, что оба браузера полностью осведомлены о текущей дате, но не будут автоматически просто вставлять ее (по крайней мере, в качестве заполнителя) ).

Ответы [ 29 ]

0 голосов
/ 24 февраля 2019

Оба топовых ответа неверны.

Короткий однострочный текст, использующий чистый JavaScript, учитывает местный часовой пояс и не требует определения дополнительных функций:

const element = document.getElementById('date-input');
element.valueAsNumber = Date.now()-(new Date()).getTimezoneOffset()*60000;
<input id='date-input' type='date'>

Получает текущую дату и время в миллисекундах (начиная с эпохи) и применяет смещение часового пояса в миллисекундах (минуты * 60k минут на миллисекунду).

Вы можете установить дату, используя element.valueAsDate, но тогда у вас есть дополнительный вызов конструктору Date().

0 голосов
/ 08 августа 2011

Поскольку по умолчанию не существует метода установки значения на сегодняшнюю дату, я бы сказал, что это должно зависеть от его применения.Если вы хотите максимально расширить возможности своей аудитории по выбору даты, используйте серверный скрипт (PHP, ASP и т. Д.), Чтобы установить значение по умолчанию.

Однако, если это для консоли администрированияCMS, и вы знаете, что у пользователя всегда будет включен JS или ваш сайт будет доверенным, тогда вы можете безопасно использовать JS для заполнения значения по умолчанию, как указано в jlbruno.

0 голосов
/ 22 июля 2018

Простое решение !!

<input class="set-today" type="date">
<script type="text/javascript">
window.onload= function(){
document.querySelector('.set-today').value=(new Date()).toISOString().substr(0,10));
}
</script>
0 голосов
/ 03 ноября 2016

Если вы используете ruby, вы можете использовать его для установки значения по умолчанию для сегодняшней даты и времени:

<input type="datetime-local" name="time" value="<%= Time.now.strftime('%Y-%m-%dT%H:%M') %>" />
0 голосов
/ 28 февраля 2013

А для тех, кто использует ASP VBScript

<%
'Generates date in yyyy-mm-dd format
Function GetFormattedDate(setDate)
strDate = CDate(setDate)
strDay = DatePart("d", strDate)
strMonth = DatePart("m", strDate)
strYear = DatePart("yyyy", strDate)
If strDay < 10 Then
  strDay = "0" & strDay
End If
If strMonth < 10 Then
  strMonth = "0" & strMonth
End If
GetFormattedDate = strYear & "-" & strMonth & "-" & strDay
End Function
%>

А затем в теле ваш элемент должен выглядеть примерно так

<input name="today" type="date" value="<%= GetFormattedDate(now) %>" />

Ура!

0 голосов
/ 25 июня 2013

Спасибо, Питер, теперь я изменяю свой код.

<input type='date' id='d1' name='d1'>

<script type="text/javascript">
var d1 = new Date();
var y1= d1.getFullYear();
var m1 = d1.getMonth()+1;
if(m1<10)
    m1="0"+m1;
var dt1 = d1.getDate();
if(dt1<10)
dt1 = "0"+dt1;
var d2 = y1+"-"+m1+"-"+dt1;
document.getElementById('d1').value=d2;
</script>
0 голосов
/ 03 декабря 2013

Вот простой способ сделать это с помощью JavaScript.

    var date = new Date();
    var datestring = ('0000' + date.getFullYear()).slice(-4) + '-' + ('00' + (date.getMonth() + 1)).slice(-2) + '-' + ('00' + date.getDate()).slice(-2) + 'T'+  ('00' +  date.getHours()).slice(-2) + ':'+ ('00' + date.getMinutes()).slice(-2) +'Z';
    document.getElementById('MyDateTimeInputElement').value = datestring;
0 голосов
/ 30 декабря 2013

У меня была такая же проблема, и я исправил ее простым JS. Ввод:

<input type="date" name="dateOrder" id="dateOrder"  required="required">

JS

<script language="javascript">
document.getElementById('dateOrder').value = "<?php echo date("Y-m-d"); ?>";
</script>

Важное замечание: JS-скрипт должен находиться в последней строке кода или после ввода, потому что, если вы введете этот код раньше, скрипт не найдет ваш ввод.

0 голосов
/ 20 января 2014

В самом HTML нет метода по умолчанию для вставки текущей даты в поле ввода.Однако, как и любое другое поле ввода, оно будет принимать значение.

Вы можете использовать PHP для извлечения текущей даты и ввода ее в поле значения элемента формы.

<?php
    // Fetch the year, month and day
    $year = date(Y);
    $month = date(m);
    $day = date(d);

    // Merge them into a string accepted by the input field
    $date_string = "$year-$month-$day";

    // Send to the browser the input field with the value set with the date string
    echo "<input type='date' value='$date_string' />";
?>

Значениеполе принимает формат YYYY-MM-DD в качестве входных данных, просто создав переменную $date_string в том же формате, что и входное значение, и заполните его годом, месяцем и днем, выбранными из текущей даты и вуаля!У вас есть заранее выбранная дата!

Надеюсь, это поможет:)

Редактировать:

Если вы хотите, чтобы поле ввода было вложено в HTMLвместо PHP вы могли бы сделать следующее.

<?php
    // Fetch the year, month and day
    $year = date(Y);
    $month = date(m);
    $day = date(d);

    // Merge them into a string accepted by the input field
    $date_string = "$year-$month-$day";
?>
<html>
    <head>...</head>
    <body>
        <form>
            <input type="date" value="<?php print($date_string); ?>" />
        </form>
    </body>
</html>

Я понимаю, что этот вопрос задавали некоторое время назад (2 года назад), но мне все еще потребовалось некоторое время, чтобы найти определенный ответ в Интернете, поэтомуэто идет на пользу любому, кто ищет ответ, когда бы он ни был, и надеется, что он всем сильно поможет:)

Другое Редактирование:

Почти забыл, что-то, что былов прошлом мне было очень жаль, что я всегда забывал устанавливать часовой пояс по умолчанию при создании скрипта на PHP, использующего функцию date ().

Синтаксис date_default_timezone_set(...);.Документацию можно найти здесь, на PHP.net и , список поддерживаемых часовых поясов для вставки в функцию можно найти здесь .Это всегда раздражало, так как я нахожусь в Австралии, все всегда отодвигается на 10 часов, если я не установил это должным образом, поскольку по умолчанию используется UTC + 0000, где мне нужно UTC + 1000, поэтому просто будьте осторожны:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...