Cela se produit parce que le comportement associé à l'HTML5 number
type d'entrée dans Chrome, et vous êtes certainement pas le seul qui ne se soucient pas de cela.
J'ai travaillé autour de ce problème dans le passé en utilisant l' text
type. Par exemple, cela a bien fonctionné (testé tout à l'heure de Chrome 11.0.696.71):
<input type="text"
placeholder="Enter Text"
name="inputName"
pattern="[0-9]*">
Ce comportement de l' number
type (pour moi, du moins), c'est certainement un bug, parce que le standard HTML5 spécifie l' number
doit avoir la valeur suivante lorsque mis en forme pour l'affichage:
L'algorithme pour convertir un nombre en chaîne, étant donné un nombre d'entrée, est comme suit: Retour valide d'un nombre à virgule flottante qui représente l'entrée.
Et la norme définit un "valide à virgule flottante" nombre ici, et aussi loin que je peux voir, y compris le groupement des personnages n'est pas prévu.
Mise à jour
J'ai isolé le problème pour le code suivant vers le bas dans les entrailles de WebKit. J'ai inclus la ligne qui résout le problème ici:
// 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());
}
Je suis en vacances la semaine prochaine, mais le plan sur la soumission de ce patch pour le WebKit de l'équipe quand je reviendrai. Une fois qu'ils (espérons-le) d'accepter le patch, Chrome devrait-elle tirer dans le cadre normal de ses processus d'actualisation.
Vous pouvez voir le code original ici, le corrigé de révision ici, et la diff de la
fichier original et le fichier patché ici. Le dernier patch a été créé par Shinya Kawanaka.