我有一个 Web 应用程序,我在其中使用 HTML5 属性 type="number"将输入字段指定为数字。
<input type="number" value="123456" />
通过指定类型,Chrome 会自动设置值的格式以包含逗号 (123,456)。在其他浏览器中,它不会格式化数字,但也不会阻止非数字字符。
在这种情况下,我不想添加逗号。有什么办法可以关闭本地化格式吗?
最佳答案
发生这种情况是因为 Chromium 中与 HTML5 number
输入类型相关的行为,您肯定是 not the only one那不关心这个。
我过去曾使用 text
类型解决过这个问题。例如,这运行良好(刚刚在 Chrome 11.0.696.71 中测试):
<input type="text"
placeholder="Enter Text"
name="inputName"
pattern="[0-9]*">
number
类型的这种行为(至少对我而言)绝对是一个错误,因为 HTML5 standard指定 number
在格式化显示时应具有以下值:
The algorithm to convert a number to a string, given a number input, is as follows: Return a valid floating point number that represents input.
标准定义了一个“有效浮点”数here ,据我所知,不希望包含分组字符。
更新
我已将问题隔离到 WebKit 的内部代码中。我在这里也包括了解决问题的行:
// From LocalizedNumberICU.cpp
String formatLocalizedNumber(double number, unsigned fractionDigits)
{
NumberFormat* formatter = numberFormatter();
if (!formatter)
return String();
UnicodeString result;
formatter->setMaximumFractionDigits(clampToInteger(fractionDigits));
formatter->setGroupingUsed(FALSE); // added this line to fix the problem
formatter->format(number, result);
return String(result.getBuffer(), result.length());
}
我下周去度假,但计划在我回来后将这个补丁提交给 WebKit 团队。一旦他们(希望)接受补丁,Chromium 应该将其作为正常刷新过程的一部分引入。
You can see the original code here, the patched revision here, and the diff of the original file and the patched file here. The final patch was created by Shinya Kawanaka.
关于html - Chrome 自动格式化 input=number,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5345095/