这是因为与Chromium中的HTML5 number输入类型相关联的行为,并且您绝对不是唯一不关心它的人。
我过去使用number类型解决了这个问题。 例如,这一点运行良好(刚刚在Chrome 11.0.696.71中测试过):
placeholder="Enter Text"
name="inputName"
pattern="[0-9]*">
number类型的这种行为(至少对我而言)肯定是一个错误,因为HTML5标准指定number在格式化显示时应具有以下值:
给定数字输入,将数字转换为字符串的算法如下:返回表示输入的有效浮点数。
标准在这里定义了一个“有效浮点数”,据我所知,包括分组字符是不可取的。
更新
我已将问题与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应该将其作为正常刷新过程的一部分。
你可以在这里看到原始代码,这里是修补后的修订版,以及 原始文件和修补文件在这里。 最后的补丁由Shinya Kawanaka创建。