我的页面上有以下表格:
<input id='startDate' type='datetime-local' step=1 name='startDate'>
我使用此代码获取字段的值:
var start = $('#startDate').val();
我的问题是输入字段的值保持未定义,直到填写完每个部分,包括小时,分钟,秒和上午/下午。我希望能够从表格中获得一个只有所选年份的价值。
我该怎么做呢?我很乐意将未填写的值清零,但我无法弄清楚如何获得用户填写的日期时间 - 本地部分。
我知道我可以使用timepicker addon为jQuery UI的datepicker做到这一点,但我真的不想走这条路 - 我更喜欢Chrome实现。
答案 0 :(得分:2)
W3C Date State spec定义了清理算法:
- 值清理算法如下:如果元素的值不是有效的日期字符串,则将其设置为空字符串。
每当设置input元素的值时调用,如DOM input value spec:
中所定义
- 获取时,必须返回元素的当前值。在设置时,必须将元素的值设置为新值,设置 element的脏值标志为true,调用值清理 算法,如果元素的类型属性的当前状态定义 一,然后,如果元素有一个文本输入光标位置,应该 将文本输入光标位置移动到文本字段的末尾, 取消选择任何选定的文本并将选择方向重置为 无。
因此,当日期无效时,value
属性将始终为空字符串。对于&#34;原始/脏/用户类型的文本值&#34;似乎没有任何属性。指定它毕竟不是文本输入。
IMO这是一件好事,它有助于表单验证,因为无效日期被视为虚假值(空字符串),它还使浏览器更自由地实现日期输入的UI。