我正在试图找出当我使用内置日期选择器时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”(字符串),以便我可以将其作为参数传递。
答案 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“没有任何技巧。当然,假设您正在阅读正确的输入字段。