我有一個HTML5日期輸入,我希望它的值默認設置爲我模型中date屬性的值。我不太關心格式化,因爲無論如何,Chrome似乎都會根據我的語言環境來決定我的格式,但理想情況下格式會始終如一dd/MM/yyyy
。Angular.js和HTML5日期輸入值 - 如何讓Firefox在日期輸入中顯示可讀的日期值?
這是我建立了我的輸入:
<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爲我決定輸入格式...
有你在初始化以正確的格式嘗試(如這裏:http://jsfiddle.net/DotDotDot/Vq65z/7/)?它可能是這樣的:'$ scope.date = $ filter('date')(new Date(),'MM/dd/yyyy')' – DotDotDot
@DotDotDot這很好,因爲這種情況下的日期將是一個字符串。不過,我更喜歡日期是一個實際的JavaScript日期對象,因爲我需要以各種方式操作它,而且它也更具語義。但基本上你的建議是我目前的黑客,是的。我爲輸入綁定的模型和它的值使用臨時字符串,並將它轉換爲表單提交的日期。 – Elise
我不同意封閉,因爲它是關於主題的,描述了代碼重現它的問題,並指出了問題所在。 – forforf