当我打开具有另一种文化和用户界面(即瑞典)的网站时,我需要的是在英语浏览器中查看正确的小数分隔符。
怎么存档呢?
<input type="number" step="0.1" pattern="[0-9]+([\,][0-9]+)?" min="0" max="5" />
如果我应用任何数字,如“0,1”,下次单击微调浏览器时,会将其重置为“0.2”,其中有一个点而不是逗号。
那么如何保持正确的小数分隔符呢?
知道如何用 jQuery 修复它吗?
目前此线程提供的答案导致了更改的解决方案type="number"
to type="text"
从用户的角度来看,这是退一步。
我用不同的方式处理这个问题。
处理来自后端的数据 - 表单准备。
表单通常提供默认值或某些字段的编辑值。这就是为什么如何为表单中的输入提供值很重要。某些框架可以在将值绑定到表单之前为您本地化值,这就是为什么来自服务器(数据库和编程语言)的值可以用逗号分隔或点分隔。如果您提供0.01
(大多数情况)作为输入值,您在客户端的任何浏览器中都不会收到错误,但如果您提供以下值0,01
(本地化值)该值在浏览器中不可见,但会作为属性在输入中提供,您将收到控制台错误:it is not proper number value
. 所以首先要做的就是用“.”替换“,”。在服务器端呈现表单时,以便在客户端始终存在点分隔值。
如果您此时保留它,您的表单将很容易受到浏览器中区域设置的影响。如果您在 Firefox 中使用区域设置 en-US 打印此类表单,您将看到一个带有点分隔值的输入,但如果您使用 Chrome 并使用区域设置打印此表单
fr-FR 您将看不到以逗号分隔的值。如果您想强制执行特定区域设置,有一个简单的解决方案。有了这个属性:
<html lang="en-US" >
您将在输入类型编号中得到点,这将为您提供逗号分隔的值:
<html lang="pl-PL" >
lang 属性也可以在输入本身设置。
前端处理。
在将表单设置为特定区域设置的 Firefox 中,如果您尝试根据您的语言设置将点或逗号作为分隔符,您将收到验证错误。所以请记住,你不能设置novalidate
表单上的属性,否则提交时发送的值将为空。
Chrome 会自动为您将点转换为逗号或将逗号转换为点。
这些是我的基本规则。
此外,如果您使用某些 JS 方法(例如 parseFloat()),您将在值中得到点,因此如果您处于类似逗号的语言环境,则必须用逗号替换点。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)