You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何input type=time在部分浏览器出现stepMismatch无效错误

问题原因
  • input[type=time]的step属性默认值为60(单位为秒),也就是默认仅支持整分钟精度的时间值。你传入的00:00:00.750包含秒和毫秒,不属于整分钟的合法取值范围,因此触发stepMismatch校验失败。
  • 不同浏览器对默认步长的校验实现有差异:Chrome对初始传入的高精度值会做兼容处理,而Safari 15、Firefox 93+的校验逻辑更严格,只要实际值精度超出默认步长允许的范围,就会直接判定为无效。
step属性的作用逻辑

对于type=time的输入框,step属性定义了合法时间值的最小间隔,单位为秒,规则如下:

  • 所有合法值必须是00:00:00加上step整数倍的时间点
  • 默认值为60,仅允许整分钟取值(如09:15、18:30等)
  • 若设置为1,则允许到秒级的取值(如09:15:30)
  • 若设置为0.001,则允许到毫秒级的取值(如09:15:30.123)
消除无效状态的方案

根据你的业务需要的时间精度,显式声明对应的step值即可。
如果你的场景需要支持毫秒级精度,修改代码如下:

<input type="time" value="00:00:00.750" step="0.001" onchange="console.log(this.validity)" />

如果只需要秒级精度,设置step="1"即可;如果仅需要整分钟,把value调整为整分钟格式(如00:00)即可,不需要额外修改step。

内容的提问来源于stack exchange,提问作者connexo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 15:33:01