热得到不完整的datetime-local输入值

时间:2014-10-28 18:04:11

标签: javascript jquery html5 datetime html-input

我的页面上有以下表格:

<input id='startDate' type='datetime-local' step=1 name='startDate'>

我使用此代码获取字段的值:

var start = $('#startDate').val();

我的问题是输入字段的值保持未定义,直到填写完每个部分,包括小时,分钟,秒和上午/下午。我希望能够从表格中获得一个只有所选年份的价值。

我该怎么做呢?我很乐意将未填写的值清零,但我无法弄清楚如何获得用户填写的日期时间 - 本地部分。

我知道我可以使用timepicker addon为jQuery UI的datepicker做到这一点,但我真的不想走这条路 - 我更喜欢Chrome实现。

1 个答案:

答案 0 :(得分:2)

W3C Date State spec定义了清理算法:

  
      
  • 值清理算法如下:如果元素的值不是有效的日期字符串,则将其设置为空字符串。
  •   

每当设置input元素的值时调用,如DOM input value spec

中所定义
  
      
  • 获取时,必须返回元素的当前值。在设置时,必须将元素的值设置为新值,设置   element的脏值标志为true,调用值清理   算法,如果元素的类型属性的当前状态定义   一,然后,如果元素有一个文本输入光标位置,应该   将文本输入光标位置移动到文本字段的末尾,   取消选择任何选定的文本并将选择方向重置为   无。
  •   

因此,当日期无效时,value属性将始终为空字符串。对于&#34;原始/脏/用户类型的文本值&#34;似乎没有任何属性。指定它毕竟不是文本输入。

IMO这是一件好事,它有助于表单验证,因为无效日期被视为虚假值(空字符串),它还使浏览器更自由地实现日期输入的UI。