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

Mat*_*bst 7 javascript jquery html5 datetime html-input

我的页面上有以下表格:

<input id='startDate' type='datetime-local' step=1 name='startDate'>
Run Code Online (Sandbox Code Playgroud)

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

var start = $('#startDate').val();
Run Code Online (Sandbox Code Playgroud)

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

我该怎么做呢?我很乐意将未填写的值清零,但我无法弄清楚如何获得用户填写的datetime-local部分.

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

End*_*ess 5

W3C日期状态规范定义了清理算法:

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

每当设置输入元素的值时都会调用它,如DOM 输入值规范中所定义:

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

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

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

  • 您可以使用一个有用的属性“input.validity”,它将为您提供“badInput customError patternMismatch rangeOverflow rangeUnderflow stepMismatch tooLong typeMismatch valid” (3认同)