6
votes

JQuery Globalize Problèmes avec la validation Paysfloat

J'essaie d'utiliser le plug-in JQuery Globalisation (https://github.com/jQuery/globalize) pour travailler avec ASP.NET MVC3 Validation non obstrive du côté client. Je suis attaché à la fois dans les cultures EN-CA et FR-CA et je voie des divergences entre ce que le plugin acceptant en tant que nombre valide vs ce que la validation du côté du service acceptait. Voici quelques exemples d'appel à la méthode globalize.parsfloat avec des entrées différentes avec les deux cultures et ce que je sors (gras indique que la validation du côté serveur ne valident pas le numéro) FR-CA

  • globalize.parsfloat ("7.12", 10, "fr-ca") renvoie 7,12
  • globalize.parsefloat ("7..12", 10, "FR-CA") renvoie Nan
  • globalize.parsfloat ("7,12", 10, "FR-CA") renvoie 7,12
  • globalize.parsfloat ("7, 12", 10, "fr-ca") renvoie NAN
  • globalize.parsfloat ("7 1 2,12", 10, "fr-ca") renvoie 712.12

    EN-CA

    • globalize.parsefloat ("7.12", 10, "EN-CA") renvoie 7.12
    • globalize.parsefloat ("7..12", 10, "EN-CA") renvoie NAN
    • globalize.parsfloat ("7,12", 10, "EN-CA") renvoie 712
    • globalize.parsefloat ("7, 12", 10, "EN-CA") renvoie 712
    • globalize.parsefloat ("7, 1 ,12", 10, "EN-CA") renvoie 712.12

      Prendre le code Paysfloat ressemble à ceci est la sortie souhaitée, mais je ne peux pas voir comment cela est prévu, alors j'espère que je manque quelque chose ... ou est-ce destiné?

      merci


0 commentaires

3 Réponses :


0
votes

Étant donné que Paysfloat est à l'intérieur, il fonctionne en premier, enveloppé par la mondialisation. Paysfloat n'est pas vraiment conçu pour gérer des chaînes complexes.


0 commentaires

0
votes

La méthode Paysfloat sur le côté du client ignore simplement les milliers de séparateurs, c'est pourquoi globalize.parsfloat ("7, 1 ,12", 10, "EN-CA") renvoie 712.12 (mille séparateur dans cette la culture est un ",").

Mille séparateur de la culture FR-CA est un espace, c'est pourquoi globalize.parsfloat ("7 1 2,12", 10, "FR-CA") renvoie 712.12.

Le point décimal ne peut se produire qu'une fois. Pour en-ca, ceci est un ".", Pour fr-CA c'est un ",". Donc, tous les exemples contenant plus d'un point décimal renvoient nan.

La seule chose que je ne puisse pas expliquer, c'est pourquoi globalize.parsfloat ("7.12", 10, "FR-CA") renvoie 7.12. Ceci est étrange car ni le point décimal ni le séparateur des milliers n'est un "." Dans cette culture, cela devrait renvoyer Nan.


0 commentaires

1
votes

On dirait que ceci est un problème connu dans le plug-in mondialisation (voir https://github.com / JQuery / Globalize / Problèmes / 46 ). On dirait que je devrai exécuter ma propre regex pour m'assurer qu'il est au bon format de la validation du côté client (bonne chose que je n'ai que de traiter deux langues pour le moment :)


0 commentaires