是什么决定输入值是用点还是用逗号输出的?

时间:2014-10-20 09:23:47

标签: html browser internationalization number-formatting

在我的网络应用程序中,我有输入这样的字段

<input type="number" value="50.0">

在我的浏览器的(德语)版本(Safari + Firefox + Chrome)中,这将输出给用户

50,0

这是正确和有用的,因为它是德国数字的标准符号(与欧洲大陆的大多数其他国家一样)。

我的问题是:

将相同的代码输出为

50.0

将系统语言设置为英语的用户?

如果是这样,这种标准是否适用于所有(或大多数)浏览器?

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

这取决于你的十进制符号设置,虽然在Chrome中我似乎也可以输入一个点作为小数点:

<强>

Windows 7

<强> OSX

OSX Maverics OSX Maverics

答案 1 :(得分:1)

除了列出特定上下文中各个浏览器的实验结果之外,我们真正可以说的是,该格式与实现有关。甚至没有实现定义;浏览器无需记录他们如何处理这个问题。

HTML5 PR says明确但非常模糊:

  

此规范未定义用户界面的用户代理   使用;鼓励用户代理供应商考虑什么是最好的   为用户服务#39;需要。例如,波斯语或用户代理   阿拉伯市场可能支持波斯语和阿拉伯语数字输入   (按照描述将其转换为提交所需的格式   以上)。同样,为罗马人设计的用户代理可能会显示   罗马数字而不是小数的值;或者更多   实际上)为法国市场设计的用户代理可能   以前用数字和逗号之间的撇号显示值   小数,并允许用户以这种方式输入值,   在内部将其转换为上述提交格式。

非规范implementation notes使情况更加模糊:

  

鼓励浏览器使用显示日期的用户界面,   时间和数字根据区域设置的约定   输入元素的语言或用户首选的暗示   语言环境。使用页面的区域设置将确保与页面的一致性   页面提供的数据。

实际上,似乎没有浏览器实际使用页面区域设置(由lang属性定义)。相反,它们使用浏览器区域设置或系统区域设置(不必相同)。

底线是HTML5输入元素没有正确本地化,规范甚至没有说明它们应该如何本地化。如果您需要控制区域设置,例如想要使用页面区域设置,您需要避免使用<input type="number" ...>并使用合适的库例程