html5 – Chrome自动格式输入=数字

前端之家收集整理的这篇文章主要介绍了html5 – Chrome自动格式输入=数字前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个Web应用程序,其中我使用HTML5属性type =“number”将输入字段指定为一个数字。
<input type="number" value="123456" />

通过指定类型,Chrome会自动将该值格式化为包含逗号(123,456)。在其他浏览器中,它不会格式化数字,但它也不会阻止非数字字符。

在这种情况下,我不想添加逗号。有任何方法可以关闭本地化格式吗?

解决方法

这是因为与Chromium中的HTML5号码输入类型相关联的行为,您肯定是 not the only one不关心这一点。

我已经通过使用文本类型过去解决了这个问题。例如,这已经很好(刚刚在Chrome 11.0.696.71中测试):

<input type="text" 
       placeholder="Enter Text" 
       name="inputName" 
       pattern="[0-9]*">

这种数字类型的行为(对我来说,至少)肯定是一个bug,因为HTML5 standard指定的数字应该具有以下值格式化显示时:

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 07003,the patched revision 07004,and the diff of the original file and the patched file 07005. The final patch was created by Shinya Kawanaka.

猜你在找的HTML5相关文章