2010-01-18 26 views
8

Xác thực đầu vào mới Asp.net mvc 2.0 hoạt động như một nét duyên dáng, ngoại trừ dấu tách thập phân khi nói đến jquery.validate. Khi tôi sử dụng Microsoft MVC ajax libs nó hoạt động tốt. Dấu phẩy là phía máy chủ tách thập phân cũng như phía máy khách.jQuery xác thực dấu phân cách thập phân và Asp.net MVC

<script src="/Scripts/MicrosoftAjax.js" type="text/javascript" ></script> 
<script src="/Scripts/MicrosoftMvcAjax.js" type="text/javascript" ></script> 
<script src="/Scripts/MicrosoftMvcValidation.js" type="text/javascript"></script> 

Khi tôi sử dụng tính năng này (jquery được tải trong chế độ xem chính), tôi phải sử dụng dấu chấm ở phía máy khách. Nhưng sau đó mô hình là không hợp lệ và nó được trả lại cho khung nhìn, tạo ra một vòng lặp thú vị.

<script src="/Scripts/jquery.validate.js" type="text/javascript"></script> 
<script src="/Scripts/MicrosoftMvcJqueryValidation.js" type="text/javascript"></script> 

Tôi muốn sử dụng jquery cho tất cả các nhu cầu javascript của mình, có cách nào để làm cho jquery.validate sử dụng dấu phẩy, chứ không phải dấu chấm? Tôi đã googling và đọc các tài liệu, nhưng đủ kỳ lạ tôi không thể tìm thấy nhiều về vấn đề này, mà bạn sẽ nghĩ rằng sẽ là một trong những phổ biến.

+0

Tôi nghĩ rằng một cách tốt nhất là gửi vấn đề này trên blog của ScottGu quá. Ông đã đăng trên xác thực một vài ngày trước và nhanh chóng trả lời trong những ngày đầu tiên của bài đăng. –

Trả lời

2

Ahhh ... Niềm vui của toàn cầu hóa!

Khi giao dịch với số (và tôi thậm chí sẽ không bắt đầu vào ngày) cần xác định dấu phân cách thập phân chính xác có thể gây khó khăn. Tuy nhiên, có một cách dễ dàng để xác định các dấu phân cách thập phân cho bất kỳ khách hàng:

function GetDecimalSeparator() 
{ 
    return (1/10).ToString().substring(1, 1); 
} 

Bằng cách này bạn sẽ luôn luôn biết tách số thập phân ở các khách hàng là gì, và có xác nhận thực hiện cho phù hợp.

+4

Ok, cảm ơn. Nhưng làm thế nào để tôi có được jquery.validate để sử dụng seperator này? Và nếu đó là một dấu chấm và phía máy chủ MVC mong đợi một dấu phẩy? Điều này đang trở nên rất khó hiểu;). – Morph

1

Có thể bạn sẽ tìm thấy câu trả lời trong số additional-methods.js. Bạn sẽ tìm thấy ví dụ về nội địa hóa ngày: tìm kiếm <input name="pippo" class="{dateITA:true}" />jQuery.validator.addMethod("dateITA", theo sau. Bạn có thể làm tương tự để thêm và sử dụng xác nhận số tùy chỉnh của bạn (tương ứng với ngôn ngữ bạn sử dụng).

0

Bạn có thể thêm dấu phẩy đến cụm từ thông dụng bên cạnh dot trong jquery.validate.min.js tập tin hoặc jquery.validate.js. Trong ví dụ tiếp theo, nó được đánh dấu bằng phông chữ đậm. (\. -> [\.,])

number: function(value, element) { 
      return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:**[\\.,]**\d+)?$/.test(value); 
     }, 

Hãy cẩn thận số exppresion gốc này chấp nhận số với dấu phân cách nghìn (,). Nó wil được tốt hơn, sử dụng RE mà không có nghìn tách nếu bạn muốn sử dụng dấu phẩy dấu phân cách thập phân.

0

Một giải pháp là vá jquery xác thực, mặc dù bạn không nên chỉnh sửa tệp trực tiếp, như Petr đã đề xuất, vì những sửa đổi này sẽ bị ghi đè nếu bạn cập nhật thêm xuống đường. Đây là một giải pháp tốt hơn: http://rebuildall.umbraworks.net/2011/03/02/jQuery_validate_and_the_comma_decimal_separator

Là một sửa chữa nhanh chóng, bạn có thể vô hiệu hóa xác nhận khách hàng, hoặc ở địa phương hoặc trên toàn cầu như đã mô tả ở đây: http://www.campusmvp.net/asp-net-mvc-3-and-the-coma-in-decimals/

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