У меня есть ввод даты HTML5, и я бы хотел, чтобы его значение было установлено на значение свойства date в моей модели по умолчанию. Я не слишком суетлив к форматированию, поскольку Chrome, похоже, решил, что для меня в любом случае зависит от моего языка, но в идеале формат будет последовательно dd/MM/yyyy
.
Вот как я настроил свой ввод:
<input type="date"
ng-model="date"
value="{{ date | date: 'yyyy-MM-dd' }}" />
Это отлично работает в Chrome, и по умолчанию я вижу следующее:
(Я все еще не совсем понимаю, почему значение должно было быть указано в yyyy-MM-dd
, если Chrome по-прежнему форматирует его на основе моей локали, но это другой вопрос.)
Моя проблема заключается в том, что Firefox не показывает значение даты так, как я указал. Я думаю, что это связано с привязкой ввода к модели date
, потому что я могу указать почти любую строку в атрибуте value
, и по-прежнему буду видеть длинную строку даты на входе по умолчанию:
Если я удаляю ng-model="date"
из входного тега, Firefox прекрасно отображает любое значение, которое я ему даю. Я не думал, что модель, связанная с вводом, фактически повлияла на ее значение по умолчанию?
Я понимаю, что ввод даты не поддерживается повсеместно, но, видя, что он должен возвращаться к простому текстовому вводу, я не понимаю, почему его значение не будет просто 2013-08-05
, как указано angular фильтр даты.
Итак, как я могу заставить Firefox принять мое форматированное значение во вводе даты?
ПРИМЕЧАНИЕ После того как изменения были сделаны пользователем, я, конечно же, проведу валидацию и преобразую каждое входное значение даты в правильный date
объект. Не уверен, что это имеет отношение к вопросу, но выставляя его там на всякий случай, потому что входные форматы, очевидно, должны быть согласованы, чтобы преобразование даты работало одинаково во всех браузерах. Проблематично, конечно, с Chrome, определяющим формат ввода для меня...