2015-01-08 7 views
3

Я работаю с атрибутами ввода элементов HTML5, и только Chrome, iOS Safari и Opera, похоже, поддерживают его в это время. Таким образом, я создал jQuery UI datepicker fallback для браузеров, которые еще не поддерживают его, но есть несколько проблем, с которыми я сталкиваюсь, и не смогли найти ответы.Формат ввода типа даты и даты выборки

  1. Если я кладу в формате даты, что datepickers требует, а затем выбрать новую дату, есть дополнительный гггг
  2. Я думаю, что формат гггг-мм-дд смешно и хотел бы это будет отображаться mm/dd/yyyy, как хром, даже если значение все равно yyyy-mm-dd. Есть ли способ сделать это с помощью datepicker или лучшего решения?

Example

JS

if (!Modernizr.inputtypes.date) { 
    $('input[type=date]').datepicker({ 
    dateFormat: 'yyyy-mm-dd' // HTML 5 
    }); 
} 

HTML

<input type="date" value="2014-01-07" /> 

Пожалуйста, смотрите в Firefox для просмотра Datepicker запасной вариант и хром, чтобы просмотреть дату ввода типа.

+0

Чтобы изменить формат datepickers, просто измените ' dateFormat' свойство? Что касается ввода исходной даты, я не думаю, что вы можете изменить это, это зависит от браузера, и обычно он будет использовать локальные настройки даты на вашем компьютере. – adeneo

+0

Как вы можете видеть, у меня есть свойство dateFormat, но мне было интересно, есть ли способ иметь значение yyyy-mm-dd и отображение mm/dd/yyyy – GSaunders

+0

В jQuery datepicker? Да, есть, это то, что вы спрашиваете, как показать что-то и позволить представленное значение быть чем-то другим? – adeneo

ответ

3

Исключительно, датпикер jQuery делает это по-другому, полный год составляет всего yy, поэтому yyyy доставит вам полный год дважды.

Вот список форматов даты ->http://api.jqueryui.com/datepicker/#utility-formatDate

Обратите внимание, что y является две цифры года, и yy это четыре цифры года.

Чтобы показать дату в одном формате и отправить другой формат, вы должны использовать опцию altField и другой вход, который содержит альтернативное значение.
Это вход, который вы подадите, пока вы показываете пользователю исходный ввод.

Чтобы установить, что для родного DatePicker, а также, вы могли бы сделать что-то вроде

<input type="date" id="date" /> 
<input type="hidden" id="alternate" /> 

и

if (!Modernizr.inputtypes.date) { 
    $("#date").datepicker({ 
     dateFormat : 'mm/dd/yy', 
     altFormat : "yy-mm-dd", 
     altField : '#alternate' 
    }); 
} else { 
    $('#date').on('change', function() { 
     $('#alternate').val(this.value); 
    }); 
} 

FIDDLE

+0

Это изящное решение. Благодаря! – GSaunders

+0

@GSaunders - приветствую вас, к сожалению, я думаю, что второй вход - это единственный способ показать один формат и отправить другого, и так обычно это делается, поэтому я надеюсь, что это сработает для вас. – adeneo

Смежные вопросы