step 属性仅控制 input type="number" 的前端数值步进粒度,无法保障配药安全;它不理解医疗逻辑,不干预单位换算、剂量规则、后端校验或上下文判断,须配合业务校验、服务端验证与UI提示共同实现安全防护。

step 属性对 input type="number" 有效,但不控制“单次配药剂量”逻辑
HTML 的 step 属性本身**不理解医疗场景**,它只做表单控件的数值步进约束。如果你指望写个 <input type="number" step="0.5"> 就能自动防止护士输错单次剂量,那是误解了它的作用范围——它只影响用户手动输入或点击上下箭头时的可选值,后端、业务规则、单位换算、药物浓度换算全都不管。
怎么用 step 实现基础数值粒度控制
在纯前端数值输入环节,step 能帮你排除非法中间值,比如限定只能输 0.1mg、0.2mg、0.3mg……这种离散剂量:
<input type="number"
min="0.1"
max="10"
step="0.1"
value="2.5">-
step必须与min对齐,否则第一个合法值可能被跳过(例如min="0.15"+step="0.1"会导致 0.15 不被接受) - 浏览器默认允许粘贴任意数字,
step不拦截;需配合input或change事件校验 - 小数精度问题常见:
step="0.1"在 JS 中实际是浮点近似值,校验时建议用Number.isInteger((value / step) * 100)类方式避免0.30000000000000004判定失败
为什么光靠 step 无法保障配药安全
真实配药涉及多个维度,step 完全不覆盖:
生成可在 deepbi 沙箱 iframe 内运行或作为独立文件运行的交互式 HTML 页面,使用 `window.deepbi` JS SDK 实现数据查询、空间管理、文件浏览及用户操作。当用户提出以下需求时启用该能力: - 创建 KPI 仪表盘、数据表格、文件浏览器、成员列表、管理页面; - 明确要求“转成 dhtml”、“转译成 HTML”、“把 XX 页面转成……”、“控制台页面”、“管理后台”、“DeepBI 页面迁移”; - 提及位于 `apps/console/src/featur
- 不同药物有不同最小有效剂量(如肝素 vs. 地高辛),不能共用一个
step - 剂量常需结合患者体重、体表面积动态计算,
step是静态值 - 单位混用风险大:界面上显示 “mg”,但后端接收的是 “μg”,
step="1"可能代表 1mg 或 1μg - 无上下文校验:输 500mg 地塞米松不会报错,哪怕这超出成人日极量 20 倍
真正该加的防护层在哪里
把 step 当作最外层“防手抖”提示即可,关键逻辑必须落在:
立即学习“前端免费学习笔记(深入)”;
- 提交前调用业务函数校验,例如
validateDose(dose, drugCode, patientWeight),查药品知识库 - 服务端重复校验——前端任何属性都可被绕过
- 在 UI 上明确标注单位、推荐范围、当前患者适用阈值(比如 “当前患者建议 2–8mg,您输入 15mg”)
- 对高危药物(如胰岛素、钾剂)强制二次确认 + 电子签名
别让 step 承担它不该背的责任。它只是个滑动条的刻度线,不是剂量审核员。


















