从移动 Safari 日期输入返回的对象类型
type of object returned from Mobile Safari date input
我试图弄清楚当我使用内置日期选择器时,Mobile Safari 返回什么样的对象。例如:
<input id="d" type="date" />
还有javascript:
alert( $("#d").val() );
在非移动 Safari 平台上,这将返回日期(例如。'"01/30/2013'").在移动野生动物园上,我认为这绝对不会返回任何内容。我发现这篇文章(在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"(字符串),以便我可以将其作为参数传递。
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",然后读取。
>.val()
有两个函数 - w/o param 它是一个 getter 并返回一个日期,使用 1 个参数它是一个 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格式。
事实证明这是人为错误。移动版本试图读取错误的输入。(一个桌面输入在<input type="text">
字段上带有 jQueryUI 选取器,另一个移动输入带有<input type="date">
字段。
我觉得自己像个白痴...事实证明,您所需要的只是<input type="date">
即使Mobile Safari会将"Jan 31, 2013"放在字段中,jQuery 1.9 $("#d").val()
返回"2013-01-31",没有任何技巧。当然,假设您正在读取正确的输入字段。
- 字符串对象类型或基元类型也是如此
- 如何在dojo中查询对象类型
- 对象类型scrollTo
- 在 Javascript 中创建全局变量时是否需要指定对象类型
- JavaScript:创建新对象类型的方法
- 如何获取对象类型
- FormData()只发送对象类型的多文件
- 获取对象类型
- 依赖对象类型检查Javascript似乎是多余的
- 访问javascript中对象类型的数组成员
- 比较对象类型时是否需要第三个=
- 如何在 Google 闭包编译器中指定对象类型的@param @return
- 窗口对象通过对象类型测试,但 hasOwnProperty 导致错误
- Javascript 空对象类型
- 何时有时将对象类型定义为将实例绑定方法镜像为构造函数上的静态实用程序函数很有用
- 在下拉列表中使用多个对象类型为数据网格提供筛选
- 为什么 String.prototype 中的“this”指的是对象类型,而不是字符串类型
- 自定义对象/类型 Javascript
- 在 Javascript 中获取对象类型的名称
- 两种 JavaScript 对象类型之间的差异