2011-12-30 5 views
2

は、私は以下のように日時、ローカル入力を持っている(のasp mvc3とかみそりを使用して)HTML5のWebページを持っている:HTML5入力日時、ローカルのGet Dateオブジェクトのクロスブラウザ

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

ブラウザはネイティブ日時ピッカーをサポートしている場合私はそれを使用し、それ以外の場合はjQueryUI日付ピッカー+時間ピッカープラグインを使用します。

私はサーバー側とクライアント側の両方の検証を行って、この日付が範囲内にあることを確認しています。サーバー側の検証は、datetime文字列を解析して検証するのに問題ありませんが、datetime pickerをネイティブにサポートするブラウザのクライアント側の検証に問題があります。

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

+0

@Domenic、それは拡張メソッドであり、日付ピッカーをサポートしていないブラウザでうまく機能します。私の問題は、ifステートメントの真の枝にあります。 – row1

答えて

0

valueAsDateはDateオブジェクトを返さないのですか?

+0

ありがとう私はこの属性について知らなかった(例ではあまり言及されていないようです)。これは、入力タイプを 'datetime'に変更すると機能しますが、 'datetime-local'の場合はnullを返します。私は本当に現地時間をユーザに提示する必要があります。 – row1

関連する問題