0

我试图弄清楚当我使用内置日期选择器时 Mobile Safari 返回的对象类型。例如:

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

和javascript:

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

在非移动 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'))返回的警报时显示“日期无效”。最终,我想要的只是获取日期字段返回的“Jan 30, 2013”​​字符串并将其转换为“01/30/2013”​​(一个字符串),这样我就可以将它作为参数传递。

4

3 回答 3

0

.val()有两个函数 - 没有参数,它是一个 getter 并返回一个日期,有 1 个参数它是一个 setter,并返回你调用的 dom 对象.val()。因此,如果您alert( $("#d").val('yyyy-MM-dd') );实际上调用警报,则会返回#ddom 对象。

这也是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

结果证明这是人为错误。移动版本试图读取错误的输入。(一个带有 jQ​​ueryUI 选择器的桌面输入,一个带有<input type="text">字段的移动输入<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 回答
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 回答