'无效的值'在HTML5 datetime-local输入中设置默认值时

时间:2013-10-09 22:54:59

标签: html5 google-chrome

有人可以解释为什么当我使用除00以外的秒设置datetime-local输入的默认值时,浏览器会给出错误“无效值”。

这可能是Chrome在datetime-local实现中的一个错误,因为此错误未出现在最新的Firefox和Safari中。

Chrome出错:30.0.1599.69

enter image description here

Chrome Canary:32.0.1665.2 canary

enter image description here

这有效:

<input type="datetime-local" name="pub_date" value="2013-10-09T15:38:00">

但这不是:

<input type="datetime-local" name="pub_date" value="2013-10-09T15:38:15">

Link to fiddle.

根据W3 Spec for the datetime-local input element,value属性应包含“表示本地日期和时间的字符串。”

Example:
1985-04-12T23:20:50.52
1996-12-19T16:39:57

我尝试了上述两个例子,它们也不起作用。

更新:已确认错误&amp;溶液

此行为是known bug

截至今天,快速解决方法是为非零秒添加步骤属性:

<input type="datetime-local" 
       name="pub_date" 
       value="2013-10-09T15:38:15" 
       step="1">

3 个答案:

答案 0 :(得分:2)

适用于Chrome版本52.0.2743.116 m

[
  "operator1(value)",
  "operator1(value), operator2(value)",
  "operator1(value), operator2(value), operator_n(value)"
].forEach((str)=>{
  var results = str
    .split(/[,\s]+/) // split operations
    .map(s=>s.match(/(\w+)\((\w+)\)/)) // extracts parts of the operations
    .filter(Boolean) // ensure there's no error (in case of impure entries)
    .map(s=>s.slice(1)); // make the desired result
  console.log(results);
});

答案 1 :(得分:1)

Chrome浏览器需要“yyyy-MM-ddThh:mm”中的日期,然后是可选的“:ss”或“:ss.SSS”格式。因此,当我们分配日期和时间时,我们需要以所需的格式分配它,否则它将不会显示日期时间。甚至我们也可以从控制台选项卡中的浏览器检查工具[Ctrl + I]确认。

enter image description here

答案 2 :(得分:0)

Chrome正在寻找一个完整的时间戳,真的没办法放一个。只需将你的毫秒归零,你应该做得很好。