2011-12-30 2 views
2

У меня есть веб-страницы HTML5 (с использованием жерех mvc3 и бритвы), который имеет DATETIME локальный вход, как показано ниже:HTML5 ввода даты и времени локального Get Объект Date Cross Browser

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

Если браузер поддерживает нативный сборщика DATETIME то я использую его, иначе я использую jQueryUI date picker + плагин выбора времени.

У меня есть проверка на стороне сервера и на стороне клиента, чтобы проверить, что эта дата находится в зоне действия. Проверка на стороне сервера отлично работает с разбором строки datetime и ее проверкой, но у меня возникла проблема с проверкой на стороне клиента для браузеров, которые изначально поддерживают сборщик datetime.

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 (рабочий стол), но не в Safari на iPad. Opera возвращает дату в формате «2011-12-01T12: 00», но Safari, похоже, делает что-то еще (похоже, «2012-01-01 00:00»).

Есть ли способ перекрестного браузера, чтобы получить фактический объект Date из собственного ввода выбора даты?

+0

'Date.parseString' не является стандартным методом; вам нужно будет показать нам код для этого. – Domenic

+0

@ Domenic, это метод расширения и отлично подходит для браузеров, которые не поддерживают выбор даты. Моя проблема заключается в истинной ветви оператора if. – row1

ответ

0

valueAsDate не возвращает объект Date?

+0

Спасибо, что я не знал об этом атрибуте (в примерах, похоже, не упоминается). Это работает, если я изменяю тип ввода на 'datetime', но он возвращает null для 'datetime-local'. Мне действительно нужно местное время, представленное пользователю. – row1

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