前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
首页程序员面试题库HTML input time step seconds increments
HTML表单与输入

time 输入的 step=60 和 step=900 分别限制什么?

type="time" 的 step 单位是秒。step="60" 允许按一分钟递增,step="900" 对应十五分钟间隔;是否合规还取决于从哪个时间基准开始计算。

前端进阶之旅 · 一题精讲更新于 2026.09.29
HTML#表单与输入#表单
先看核心答案读代码示例
理解线索

时间步长以秒计算

  1. type="time"录入一天中的本地时间
  2. step规定相邻合法时间的秒数间隔
  3. stepMismatch当前值未落在允许刻度上

有 min="09:05" 时,十五分钟刻度从 09:05 开始,不必落在整点的 00、15、30、45 分。

核心回答

先记住这个答案

时间输入的 step 以秒计,60 是一分钟,900 是十五分钟。合法值不仅取决于间隔,还取决于步进基准:若 min="09:05" 且 step="900",允许时间从 09:05、09:20、09:35 这样推进。浏览器原生选择器显示哪些分钟选项可能不同,但最终应看约束校验结果,而不是只看 UI 有没有隐藏某个时间。

  • 时间 step 的单位是秒
  • 60 对应一分钟步长
  • 900 对应十五分钟步长
  • 合法刻度需结合步进基准

预约时间从营业开始算

门店 09:05 开始接待,每 15 分钟开放一个时段。若误以为 step="900" 永远锁定在整点后的 00、15、30、45 分,就会错误拒绝 09:20。

从最小值开始计时HTML
<label for="slot">预约时间</label>
<input id="slot" name="slot" type="time"
  min="09:05" max="17:05" step="900" required>

这里 900 秒等于 15 分钟,步进基准是 min,所以 09:05、09:20 等值符合步进。若用户填 09:10,虽然处于营业范围内,却会出现 stepMismatch。 若不设置 min,步进基准还可能受初始值等规则影响。关键业务场景应显式设置 min 与 step,不要靠默认刻度猜测。

选择器外观与数据约束分开

浏览器对时间输入可能显示滚轮、下拉列表或系统原生面板。有的界面只呈现部分候选,有的仍允许键盘编辑;不能只根据可见选项判断所有值是否合法。

脚本可读取 input.validity.stepMismatch,也要检查 rangeUnderflow 和 rangeOverflow。服务端收到的是时间字符串,还应验证营业时间、预约名额和时区相关业务规则;原生 time 值本身不携带日期或时区。

当 step 不是 60 的整数倍,例如写 step="30",合法值可能带秒,控件界面也可能出现秒输入区;提交字符串因此不一定只有 HH:mm,还可能是 HH:mm:ss。夜间门店还可能用晚于 max 的 min 表达跨午夜时段,不能简单把时间字符串当普通数字区间比较。最后,time 值始终不带日期或时区;跨地区预约必须另有日期和明确时区,才能确定真实时刻。

如果要写脚本展示预约刻度,可通过 input.value 读取规范化字符串,再按业务规则解析。不要从操作系统时间面板上读显示文本:12 小时制界面可能显示上午、下午,但提交值仍按标准格式表示。脚本调用 stepUp() 也会依照控件的基准和步长推进,适合做“下一个时段”按钮;实际可预约名额仍需向服务器确认。

回答前,多想一步

容易答错的地方

把 step="900" 当成 900 分钟
对 time 来说单位是秒,900 秒是 15 分钟。
以为原生面板会在所有浏览器里隐藏非法分钟
控件外观和输入路径各异,最终以值与约束校验为准。
试着用自己的话回答

面试官还会怎么问?

step="any" 有什么用?

取消步进间隔限制;min、max 等其他约束仍可生效。

time 值带日期或时区吗?

不带,它表示一天中的时间字符串。预约日期与时区要由其他字段或业务逻辑确定。

为什么 09:10 在这个例子里不合法?

它比 09:05 只晚五分钟,不能写成 15 分钟步长的整数倍。

从一道题,走向一组知识

把知识连起来

表单与输入

setCustomValidity 设置错误后,怎样恢复原生校验?

自定义错误消息可专门解释不符合预约时段的时间值。

表单与输入

week 输入的值为什么像 2026-W01,一年一定有 52 周吗?

week 输入使用周编号,值格式与一天中的时间完全不同。

参考资料

  • HTML:表单与输入参考资料

示例用于理解所注明的运行环境与边界;延伸学习可结合原文中的更多案例。

本题目录
  1. 先记住这个答案
  2. 预约时间从营业开始算
  3. 选择器外观与数据约束分开
  4. 容易答错的地方
  5. 面试官还会怎么问
  6. 把知识连起来
读懂,再试着讲出来

先看核心答案,再读代码。最后展开追问,检查自己有没有遗漏边界。

试着回答追问
浏览全部面试题理解原理,也关注真实的使用场景。回到顶部 ↑