禁止输入负数的HTML number文本框输入0.05变为整数如何修复
问题根源
原有代码的问题出在输入触发逻辑里,强制将所有输入内容转为数值后取绝对值:当你输入0.时,这段内容会被识别为数值0,直接替换掉你输入的带小数点的字符串0.,小数点被清除后,后续输入的小数部分就会被识别为整数拼接,最终就出现0.05变成5的异常。
修复后代码
直接替换原input标签的oninput逻辑即可,既保留禁止输入负数的能力,也不会破坏正常小数的输入过程:
<input type="number" min="0" oninput="this.value = this.value < 0 ? Math.abs(this.value) : this.value">
效果验证
- 输入正整数、正小数时,完全保留原输入内容,0.05可以正常输入
- 输入负数时,会自动转为对应的正数,满足禁止输入负重量的需求
- 输入为空时不会做额外处理,符合常规交互逻辑
内容的提问来源于stack exchange,提问作者Anup Deuja
相关产品推荐
相关产品推荐

