从Mobile Safari日期输入返回的对象类型

时间:2013-01-30 23:14:59

标签: javascript jquery ios6 datepicker mobile-safari

我正在试图找出当我使用内置日期选择器时Mobile Safari返回的对象类型。例如:

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

和javascript:

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

在非移动Safari平台上,返回日期(例如“01/30/2013”​​)。在Mobile Safari上,我认为这绝对没有任何回报。我发现这篇文章(Setting the value of date inputs on iPad)让我更进一步:

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

但警告弹出[object Object]而且我被卡住了。当我在val()选择器中指定格式时,它返回了什么样的对象?我已经尝试通过$ .datepicker(来自jQueryUI)运行它,但是这不起作用,当我尝试new Date($("#d").val('yyyy-MM-dd'))时,返回的警报显示“无效日期”。最终我想要的是获取日期字段返回的“2013年1月30日”字符串并将其转换为“01/30/2013”​​(字符串),以便我可以将其作为参数传递。

3 个答案:

答案 0 :(得分:0)

.val()有两个函数 - 没有param它是一个getter并返回一个日期,并且有一个param它是一个setter并返回你调用.val()的dom-object。因此,如果您实际呼叫alert( $("#d").val('yyyy-MM-dd') );,则警报会返回#d dom-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格式。

答案 1 :(得分:0)

Mobile Safari返回与任何其他Webkit浏览器完全相同的日期输入值。您遇到的混乱是jQuery。

jQuery的val方法在没有参数的情况下调用时返回日期输入的'value'属性的值,例如。

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

但是当它被调用/ with /参数时,它将设置value属性并返回一个jQuery对象以允许链接。 e.g。

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

在最后一个示例中,该值设置为“2013-05-22”,然后读取。

答案 2 :(得分:0)

原来这是人为错误。移动版本试图读取错误的输入。 (一个桌面输入在<input type="text">字段上有一个jQueryUI选择器,另一个带有<input type="date">字段的移动输入。)

我觉得这样一个白痴......结果你所需要的只是<input type="date">,即使Mobile Safari将“2013年1月31日”放在该领域,jQuery 1.9 $("#d").val()将返回“2013 -01-31“没有任何技巧。当然,假设您正在阅读正确的输入字段。