Используя Eonasdan bootstrap-datetimepicker, необходимо установить год до 65 лет назад.

У меня есть приложение для медицинских работников, обслуживающих пациентов Medicare, обычно в возрасте от 60 до 100 лет, и мы используем Eonasdan bootstrap-datetimepicker, чтобы позволить им выбирать даты рождения следующим образом:

JavaScript:

$('.birthDateTimePicker').datetimepicker({
    format: 'M/D/YYYY',
    maxDate: (new Date()),// used to disallow future dates
    showClose: true,
    viewMode: 'years'
});

HTML:

<div class="input-group birthDateTimePicker">
    <input id="birthDt" name="birthDt" type="text" placeholder="Birth Date"
            class="form-control col-sm-3 col-md-3 col-lg-2" required />
    <span class="input-group-addon">
        <span class="glyphicon glyphicon-calendar"></span>
    </span>
</div>

Это создает дисплей, который изначально не имеет выбранной даты, но говорит: Birth date в поле ввода. Проблема в том, что по умолчанию используется 2015 год, поэтому выбор года мучительно медленный из-за преклонного возраста большинства пациентов. Я попытался установить defaultDate так:

$('.birthDateTimePicker').datetimepicker({
    defaultDate: moment().subtract(68, 'y'),
    format: 'M/D/YYYY',
    maxDate: (new Date()),// used to disallow future dates
    showClose: true,
    viewMode: 'years'
});

Но теперь вместо отображения Birth date в поле ввода отображается фактическая дата, например 12/10/1947, в поле ввода. Я хочу предварительно установить начальный год, НО НЕ предварительно выбрать всю дату. День рождения ОЧЕНЬ важен в медицинском лечении, которое они получают, И используется с их именем для идентификации, и ПОСЛЕДНЕЕ, что я хочу, это чтобы кто-то забыл ввести дату рождения, и поскольку она уже предварительно выбрала конкретную дату, они получают неправильный день рождения. Итак, как сделать так, чтобы медицинскому работнику было легко выбирать год, но при этом он не мог произвольно вводить неправильную дату?


person TriumphST    schedule 10.12.2015    source источник


Ответы (1)


Если вы используете последнюю версию, вы можете установить следующие параметры:

viewDate: moment().subtract(68, 'y'),
format: 'M/D/YYYY',
maxDate: moment(),
showClose: true,
viewMode: 'years'

viewDate — это параметр, который заставит средство выбора открываться в указанную дату.

person Eonasdan    schedule 10.12.2015
comment
Спасибо за быстрый ответ. Я увидел это в документах и ​​предположил, что viewDate может сделать это (документация была довольно скудной, поэтому не было очевидно, что будет делать viewDate - еще пара предложений сделали бы это намного яснее...), поэтому я взял последние версии moment .js и bootstrap-datetimepicker, и я попробовал это, прежде чем публиковать. К сожалению, это не работает. Он не предварительно заполняет поле ввода (как хотелось бы), но когда я нажимаю на значок календаря, появляется окно выбора года, как и раньше, с «‹ 2010 - 2021 ›» вверху и выбранным «2015»: - ( - person TriumphST; 10.12.2015
comment
работает для меня: jsfiddle.net/Eonasdan/o87jvk52 пожалуйста, предоставьте jsfilddle другим способом - person Eonasdan; 10.12.2015
comment
да, я видел, как ваш jsfiddle работал :-) Не уверен, в чем разница между моей и вашей скрипкой. Я использую последнюю версию jQuery, я использую только moment.js, а не moment-with-locales.js, который использует ваша скрипка. Кроме того, когда я пытаюсь использовать _bootstrap-datetimepicker.less, поставляемый с вашей последней версией DTP, он выдает ошибки, что @ screen-sm-min @ screen-md-min не определены (исходя из памяти). Каковы зависимости для версии, которую вы разместили на скрипке? - person TriumphST; 11.12.2015
comment
Я должен использовать useCurrent: false для работы viewDate - person Ramon Carvalho; 24.09.2018