0

私は現在、PhonegapとjQuery Mobileを使用してiOSアプリを構築しており、ユーザーが誕生日を入力するためにHTML5入力タイプの日付要素を使用しています。これは、Phonegapアプリが使用するのに完全に理にかなっています。これは、電話のネイティブdatepickerを呼び出すためです。これはすばらしいことです。

ただし、デスクトップブラウザを使用してアプリをテストする場合(Firefox 16を使用しています)、Firefoxがまだこれを実装していないため、日付ピッカーは表示されません。そのフィールドに好きなものを入力できるという事実を除いて、それはクールです-私が好きなフォーマット。

仕様では、このyyyy-mm-ddフォーマットを使用する必要があると規定されており、私のiOSデバイスはそれを実行します。しかし、たとえば06-09-94、を入力すると、JavaScriptの日付オブジェクトに変換しようとするとうまく機能しません。

これが私のテストです:

// Value is set to 1994-09-06
console.log(new Date($("input[type=date]")[0].value));
// > Date object representing September 6, 1994

// Value is set to 06-09-1994
console.log(new Date($("input[type=date]")[0].value));
// > Invalid date

私はどこかで内部的に(少なくともクロームの場合)、すべての「有効な」日付形式がとして表されることを読みましyyyy-mm-ddたが、それは起こっていません。http://updates.html5rocks.com/2012/08/Quick-FAQs-on-input-type-date-in-Google-Chrome

入力値はどのような形式を返しますか?

input.valueは、表示形式に関係なく、常にyyyy-mm-ddとして返されます。

それで、タイトルが示唆するように:なぜ私は非モバイルベースのWebアプリケーションでを使用したいのですか?<input type="date">

4

3 に答える 3

2

いつの日かすべての主要なブラウザがHTML5フォーム要素をサポートすることが期待されているため、HTML5フォーム要素を使用することをお勧めします。お気づきのように、datepickersなどは、箱から出してすぐに非常に優れた機能を提供します。それ以外の場合は、手動でコーディングする必要があります。

ただし、ユーザーが使用しているブラウザーを制御できない環境では、ユーザーを自立させたくはありません。

現時点でこれを処理するための推奨される方法は、ブラウザーが必須のフォームフィールドをサポートしているかどうかを確認し、サポートしていない場合は、jQueryUI要素などの代替手段を使用することです。すばやくグーグルでチュートリアル:http ://www.javascriptkit.com/javatutors/createelementcheck2.shtml

jsフレームワークの中には、このようなチェックを内部で処理するものがあると思います。少なくともdojoの場合、可能な限り多くのネイティブブラウザー機能を使用しようとしていることは知っていますが、datepickersでどのように処理されるかはわかりません。

Firefoxがまだこれを実装していないことに驚いています。ChromeとOperaが先導しているようです。

于 2012-10-30T09:24:59.553 に答える
0

すべてのブラウザがまだすべてのHTML5機能をサポートしているわけではないため、すべての利点をすぐに確認することはできません。
タグはそれらの機能の<input type=date>1つであり、Chromeブラウザでコードを実行すると、矢印ボタンをクリックして日付を選択できるときに日付ピッカーが開きます。この機能はSafariブラウザにはありません。ブラウザの更新を待つだけです。

于 2012-10-30T09:15:59.607 に答える
0

オブジェクトに変換する前に、値が適切な日付形式であることを確認しDateます。

そうでない場合は、代わりにエラーメッセージをユーザーに表示します(たとえば、を追加する<label><input>、を使用してalert)。

于 2012-10-30T09:18:23.720 に答える