2011-09-08 16 views
6

Tôi đang cố gắng sử dụng plugin toàn cầu hóa jquery (https://github.com/jquery/globalize) để làm việc với xác thực không xác thực của khách hàng asp.net mvc3 bên. Tôi đã gắn liền với cả hai nền văn hóa en-CA và fr-CA và đã thấy một số khác biệt giữa những gì plugin chấp nhận dưới dạng một số hợp lệ so với những gì xác thực bên dịch vụ đang chấp nhận. Dưới đây là một số ví dụ về cách gọi phương thức Globalize.parseFloat với các đầu vào khác nhau với hai nền văn hóa và những gì tôi nhận ra (đậm chỉ ra rằng xác nhận phía máy chủ doesnt xác nhận số) fr-CAjquery toàn cầu hoá các sự cố với xác thực parseFloat

  • Globalize.parseFloat ("7.12", 10, "fr-CA") trả về 7.12
  • Globalize.parseFloat ("7..12", 10, "fr-CA") trả về NaN
  • Globalize.parseFloat ("7, 12 ", 10," fr-CA ") trả về 7.12
  • Globalize.parseFloat (" 7,, 12 ", 10," fr-CA ") trả về NaN
  • Globalize.parseFloat ("7 1 2,12", 10, "fr-CA") trả về 712,12

en-CA

  • Globalize.parseFloat ("7.12", 10 "en-CA") trả về 7.12
  • Globalize.parseFloat ("7..12", 10, "en-CA") trả về NaN
  • Globalize.parseFloat ("7,12", 10 " en-CA ") trả về 712
  • Globalize.parseFloat ("7,, 12", 10 "en-CA") trả về 712
  • Globalize.parseFloat ("7,, 1,, 2.12", 10, "en-CA") trả về 712,12

Đẩy mạnh thông qua các mã parseFloat trông như thế này là sản phẩm dự định nhưng tôi không thể nhìn thấy cách này được dự định vì vậy tôi hy vọng tôi thiếu cái gì ... hay là này dự định?

Cảm ơn

Trả lời

1

Có vẻ như đây là sự cố đã biết trong plugin toàn cầu hóa (xem https://github.com/jquery/globalize/issues/46).Có vẻ như tôi sẽ phải chạy regex của riêng mình để đảm bảo rằng nó có định dạng phù hợp để xác thực phía khách hàng (điều tốt tôi chỉ phải đối phó với hai ngôn ngữ tại thời điểm này :)

0

Vì parseFloat ở trong, nó chạy đầu tiên, được bao bọc bởi Globalize. parseFloat không thực sự được thiết kế để xử lý các chuỗi phức tạp.

0

Phương thức parseFloat ở phía máy khách chỉ bỏ qua hàng nghìn dấu tách, vì vậy đây là lý do tại sao Globalize.parseFloat ("7,, 1,, 2.12", 10, "en-CA") trả về 712.12 (dấu tách nghìn trong văn hóa này là ',').

Dấu phân tách nghìn cho văn hóa fr-CA là không gian, đây là lý do tại sao Globalize.parseFloat ("7 1 2,12", 10, "fr-CA") trả về 712,12.

Dấu thập phân chỉ có thể xảy ra một lần. Đối với en-CA, đây là '.', Đối với fr-CA, đây là ','. Vì vậy, tất cả các ví dụ chứa nhiều hơn một dấu thập phân sẽ trả về NaN.

Điều duy nhất tôi không thể giải thích là tại sao Globalize.parseFloat ("7.12", 10, "fr-CA") trả về 7.12. Điều này là lạ bởi vì cả dấu thập phân lẫn dấu tách hàng nghìn đều không phải là '.' trong văn hóa này, vì vậy điều này sẽ trả về NaN.

Các vấn đề liên quan