我有一個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對象?
'Date.parseString'不是標準方法;你需要向我們展示代碼。 – Domenic 2011-12-30 18:19:44
@Domenic,這是一種擴展方法,適用於不支持日期選擇器的瀏覽器。我的問題在if語句的真正分支中。 – row1 2011-12-31 02:06:27