2011-12-30 61 views
2

我有一個HTML5網頁(使用ASP MVC3和剃刀),其中有如下日期時間,本地輸入:HTML5輸入日期時間本地獲取Date對象的跨瀏覽器

<input type="datetime-local" name="StartTime" id="StartTime" data-val-required="The Event Start Time field is required." data-val="true"> 

如果瀏覽器支持原生的日期時間選擇器然後我使用它,否則我使用jQueryUI日期選擇器+時間選擇器插件。

我有服務器端和客戶端驗證來檢查此日期是否在範圍內。服務器端驗證在解析日期時間字符串並驗證它時正常工作,但我在瀏覽器的客戶端驗證方面遇到了問題,它本身支持日期時間選擇器。

var startdatevalue = $('#StartTime').val(); 
var value = $('#EndTime').val(); 
var dateStart, dateValue; 
if (Modernizr.inputtypes.date) { 
    //TODO: this doesn't seem to work in safari mobile 
    dateStart = Date.parse(startdatevalue); 
    dateValue = Date.parse(value); 
} 
else { 
    dateStart = Date.parseString(startdatevalue.trim(), "@Constants.DateTimeFormat"); 
    dateValue = Date.parseString(value.trim(), "@Constants.DateTimeFormat"); 
} 

根據以上代碼中的註釋,這可以在Opera 11(桌面)中使用,但不能在iPad上使用Safari。 Opera以格式「2011-12-01T12:00」返回日期,但Safari似乎在做其他事情(似乎是「2012-01-01 00:00」)。

是否有跨瀏覽器方式從本機日期選取器輸入中獲取實際的Date對象?

+0

'Date.parseString'不是標準方法;你需要向我們展示代碼。 – Domenic 2011-12-30 18:19:44

+0

@Domenic,這是一種擴展方法,適用於不支持日期選擇器的瀏覽器。我的問題在if語句的真正分支中。 – row1 2011-12-31 02:06:27

回答

0

valueAsDate不返回Date對象嗎?

+0

謝謝我不知道這個屬性(在示例中似乎沒有提到太多)。如果我將輸入類型更改爲'datetime',但它會爲'datetime-local'返回null。我真的需要將本地時間呈現給用戶。 – row1 2011-12-31 02:35:32

相關問題