2012-04-14 3 views
3

Я использую форму HTML 5 на iPhone. Эта форма имеет входной элемент, как следующее:HTML 5 - Форматирование даты ввода типа на iOS

<input id="birthdate" type="date" /> 

Когда пользователь нажимает это поле, появляется дата выбор IOS. После того, как пользователь выбирает дату, он помещает дату в поле, отображаемое как что-то вроде: 14 апреля 2012 года.

Мой вопрос: есть ли способ отформатировать эту дату так, чтобы это выглядело 14-14-2012 в текстовом поле? Или, желательно, есть прямой подход к преобразованию формата даты iOS в объект JavaScript Date?

+2

Возможный дубликат [Указание вывода значения типа ввода HTML5 = дата?] (Http: // stackoverflow.com/questions/3496241/specifying-the-value-output-of-an-html5-input-type-date) – epascarello

ответ

3

Я всегда считал, что формат должен быть YYYY-MM-DD.

W3C spec & RFC3339.

В любом случае, вы можете конвертировать его с помощью JavaScript.

var dateInput = document.getElementById('birthdate'); 

dateInput.addEventListener('change', function() { 
    dateInput.value = new Date(dateInput.value).toISOString().split('T')[0]; 
}, false); 
+1

Вы верны. Но iOS всегда приходится делать то, что нужно. –

2

No.

Есть два формата в игре:

  • отображенные формат
  • внутренний формат подвергается JavaScript и отправляется на сервер

Вы не можете изменить формат отображения. Это зависит от браузера, чтобы определить, как дата представляется пользователю (на практике это определяется локалью системы).

Вы также не можете изменить внутренний формат. Это всегда ISO8601, независимо от браузера/локали.

0

Следующее должно сделать это.

$dat = new DateTime($_POST['MyDATE']); 
$new_format = $dat->format('Y-m-d'); 
+3

Почему вы ожидаете, что бэкэнд будет написан на PHP? –

0

Я согласен с @ PorneL отвечают, однако, вы потенциально можете сделать некоторую работу, чтобы имитировать результаты, которые вы хотите. Я укажу, что это не лучший способ сделать это.

В псевдокоде:

  • Есть два входа, один из типа даты и другой текст.
  • Введите дату, которое будет либо невидимым, либо 1px x 1px в стороне, и введите размер, который вам нужен
  • Сфокусируйтесь на текстовом вводе, установите фокус на соседний ввод даты автоматически.
  • На этом этапе пользователь будет редактировать поле ввода даты
  • При изменении поля даты возьмите значение и вставьте его в текстовое поле, используя любое форматирование, которое вы предпочитаете.

Опять же, это может быть не лучшее решение, но оно может работать таким образом.

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