我正在构建一个主要面向移动浏览器的Web应用程序。我使用数字类型的输入字段,因此(大多数)移动浏览器仅调用数字键盘以提供更好的用户体验。这个Web应用程序主要用于小数分隔符为逗号而不是点的地区,因此我需要处理两种小数分隔符。
如何覆盖点和逗号的混乱情况?
我的发现:
桌面Chrome
- 输入类型=数字
- 用户在输入字段中输入“4,55”
$(“#my_input”)。val();
返回“455”- 我无法从输入中获取正确的值
桌面Firefox
- 输入类型=数字
- 用户在输入字段中输入“4,55”
$(“#my_input”)。val();
返回“4,55”- 没问题,我可以将逗号替换为点并获得正确的浮点数
Android浏览器
- 输入类型=数字
- 用户在输入字段中输入“4,55”
- 当输入框失去焦点时,值被截断为“4”
- 用户会感到困惑
Windows Phone 8
- 输入类型=数字
- 用户在输入字段中输入“4,55”
$(“#my_input”)。val();
返回“4,55”- 没问题,我可以将逗号替换为点并获得正确的浮点数
在这种情况下,当用户可能使用逗号或点作为小数分隔符,并且我希望保持HTML输入类型为数字以提供更好的用户体验时,有哪些“最佳实践”?
我能否即时将逗号转换为点,绑定关键事件,它是否适用于数字输入?
编辑
目前我没有任何解决方案可以从类型为“数字”的输入中获取浮点值(作为字符串或数字)。如果最终用户输入“4,55”,Chrome始终返回“455”,Firefox返回“4,55”,这是很好的。
另外,令人非常烦恼的是,在Android(测试了4.2模拟器)中,当我将“4,55”输入到输入字段并将焦点改变到其他地方时,输入的数字被截断为“4”。
.val()
函数,而Android则会出现一些奇怪的问题。你能否检查一下当系统语言设置为适当的语言时它们是否行为相同? - millimoose```var number = $(...).get(0).valueAsNumber;``` ```if (isNaN(number)) number = parseFloat($(...).val().replace(',', '.');```
但这个解决方案仅在输入的数字只包含1个逗号和没有额外的点的情况下有效... - bert bruynooghe