0

組み込みの日付ピッカーを使用すると、Mobile Safari が返すオブジェクトの種類を把握しようとしています。例えば:

<input id="d" type="date" />

そしてJavaScript:

alert( $("#d").val() );

Mobile Safari 以外のプラットフォームでは、これは日付を返します (例: "01/30/2013")。Mobile Safari では、これはまったく何も返さないと思います。この記事 ( iPad での日付入力の値の設定) を見つけて、もう少し先に進みました。

alert( $("#d").val('yyyy-MM-dd') );

しかし、アラートがポップアップし[object Object]て行き詰まります。val()セレクターでフォーマットを指定すると、どのようなオブジェクトが返されますか? $.datepicker (jQueryUI から) を使用して実行しようとしましたが、うまくいきませんでした。またnew Date($("#d").val('yyyy-MM-dd'))、アラートを試してみると、「無効な日付」と表示されます。最終的に必要なのは、日付フィールドが返す「2013 年 1 月 30 日」の文字列を「2013 年 1 月 30 日」(文字列) に変換して、パラメーターとして渡すことだけです。

4

3 に答える 3

0

.val()2つの関数があります-パラメータなしではゲッターで日付を返し、1つのパラメーターではセッターで呼び出していたdomオブジェクトを返します.val()。したがって、alert( $("#d").val('yyyy-MM-dd') );実際に呼び出すと、アラートは#ddom-objectを返します。

これは、エラーが発生する理由でもありnew Date($("#d").val('yyyy-MM-dd'))ます。代わりに次のようになります new Date($("#d").val('yyyy-MM-dd').val())

new Date("Jan 30, 2013")

必要なIOS以外はすべて正常に動作するはずです

new Date("2013-01-30")

これにより、操作できるDateオブジェクトが返されます。

この方法.toISOString();は、通常の日付をIOSが必要とするISO形式に変換するのに役立ちます。

于 2013-01-31T15:24:34.990 に答える
0

Mobile Safariは、他のWebkitブラウザーとまったく同じタイプの日付入力値を返します。あなたが抱えている混乱はjQueryにあります。

jQueryのvalメソッドは、パラメータなしで呼び出された場合、日付入力の'value'プロパティの値を返します。

var value = $("input.foo").val()

ただし、/ with /パラメータが呼び出されると、valueプロパティが設定され、連鎖を可能にするjQueryオブジェクトが返されます。例えば

var value = $("input.foo").val("2013-05-22").val() //"2013-05-22"

最後の例では、値は「2013-05-22」に設定されてから読み取られます。

于 2013-01-31T15:36:26.780 に答える
0

これは人的ミスであることが判明しました。モバイル版は間違った入力を読み取ろうとしていました。(フィールド上の jQueryUI ピッカーを使用した 1 つのデスクトップ入力と、<input type="text">フィールドを使用した 1 つのモバイル入力<input type="date">。)

私はそのような馬鹿のように感じます...必要なのは<input type="date">、Mobile Safariが「2013年1月31日」をフィールドに入力しても、jQuery 1.9$("#d").val()はトリックなしで「2013-01-31」を返すことだけです。もちろん、正しい入力フィールドを読んでいると仮定します。

于 2013-01-31T16:04:42.520 に答える