本文详解如何在 `type=”number”` 输入框中通过按钮点击添加小数点,避免值被重置,并兼顾数字格式校验与用户体验。
在构建计算器等需要严格数字输入的 Web 应用时,常会遇到一个典型矛盾: 能自动过滤非法字符(如字母),但原生不支持手动插入小数点(尤其当当前值为空或为整数时),点击小数点按钮后输入框可能意外清空或忽略 . —— 这是因为浏览器对 number 类型的输入有严格的解析逻辑:若 ., 123., 或 . 等非有效数字字符串被赋给 value,浏览器会将其视作无效值并重置为 “”。
✅ 正确解法:配合 step 属性 + 合法数值追加
关键在于确保每次赋值都构成一个语法有效的数字字符串。仅追加 “.” 是非法的(如 “5.” 不被 number 输入接受),而 “5.0” 是合法的。因此,应追加 “.0″,并同步设置 step=”0.001″(或更小精度)以允许小数输入:
对应 JavaScript 逻辑如下(含健壮性增强):