2011-09-06 20 views
31

Có quá nhiều câu hỏi và câu trả lời về chức năng cơ bản này, tôi không thể thấy gỗ cho cây.Định dạng số JQuery

Trong Java chỉ có một câu trả lời đơn giản (java.text.NumberFormat và các lớp con của nó), vì vậy tôi chắc chắn phần lớn các plugin, câu hỏi và câu trả lời cuối cùng sẽ trở thành tiêu chuẩn de facto cho JQuery.

này Plugin là tốt nhất mà tôi tìm thấy cho đến nay, nhưng tôi không biết nếu nó vẫn phát triển, là trưởng thành, vv

http://plugins.jquery.com/project/numberformatter

Có một giải pháp tốt hơn? Là nó trưởng thành/hoạt động, đủ để dựa vào?


Edit:

Tôi muốn để có thể tệ định dạng, số thập phân, số nguyên dựa trên các mô hình dạng tương tự Java sử dụng, do đó dữ liệu nhận được trên các mặt hàng có thể được định dạng mà không gửi nó đầu tiên đến máy chủ.

ví dụ:

Format 1000-$1,000 hoặc 1,000.00 vv (hỗ trợ địa phương là tốt đẹp)

Có vẻ rằng http://plugins.jquery.com/project/numberformatter hiện công việc nhưng câu hỏi là: "Tôi có sử dụng điều đúng đắn" hoặc "Có cách nào tốt hơn để làm như vậy?"

+2

Đây có phải là câu hỏi hay không? – alex

+2

trông giống như cả hai ... – SublymeRick

+0

cho bản ghi Java và Javascript là hai điều hoàn toàn khác nhau. Nó không thực sự công bằng khi gõ js hay jQuery vì không có một tính năng java: P –

Trả lời

52

tôi sẽ khuyên bạn nên nhìn vào bài viết này về cách sử dụng javascript để xử lý định dạng cơ bản:

function addCommas(nStr) 
{ 
    nStr += ''; 
    x = nStr.split('.'); 
    x1 = x[0]; 
    x2 = x.length > 1 ? '.' + x[1] : ''; 
    var rgx = /(\d+)(\d{3})/; 
    while (rgx.test(x1)) { 
     x1 = x1.replace(rgx, '$1' + ',' + '$2'); 
    } 
    return x1 + x2; 
} 

nguồn: http://www.mredkj.com/javascript/numberFormat.html

Trong khi jQuery có thể làm cho cuộc sống của bạn dễ dàng hơn trong một triệu cách khác nhau tôi sẽ nói nó quá mức cần thiết cho việc này. Hãy nhớ rằng jQuery có thể khá lớn và trình duyệt của người dùng của bạn cần tải xuống nó khi bạn sử dụng nó trên một trang.

Khi đã từng sử dụng jQuery, bạn nên quay lại và hỏi xem liệu nó có đủ đóng góp để biện minh cho chi phí phụ tải xuống thư viện không.

Nếu bạn cần một số định dạng nâng cao (như nội dung bản địa hóa trong plugin bạn đã liên kết) hoặc bạn đã bao gồm jQuery, bạn có thể xem xét một plugin jQuery.

Lưu ý bên - check this out nếu bạn muốn nhận được một tiếng cười về việc sử dụng jQuery quá mức.

+1

Tốt và thẳng về phía trước, cảm ơn –

+4

Tôi đã tạo một Plugin jQuery với mã này. Bây giờ thật dễ dàng để áp dụng cho nhiều vị trí trong một trang: '$ ('. Number'). FormatNumber();'. Mặc định là đặt 1343034.09 thành 1.343,034.09 - https://github.com/RaphaelDDL/jquery.formatNumber – RaphaelDDL

+0

Abe, liên kết bạn cung cấp cực kỳ hữu ích. Có lẽ bạn có thể chỉnh sửa câu trả lời của bạn và thêm các chức năng chính ở đây trong trường hợp nó biến mất? Bạn đã được cấp tín dụng phù hợp. –

16

Sử dụng các plugin jQuery Number Format, bạn có thể nhận được một số định dạng theo một trong ba cách sau:

// Return as a string 
$.number(1234.5678, 2); // Returns '1,234.57' 

// Place formatted number directly in an element: 
$('#mynum').number(1234.5678); // #mynum would then contain '1,235' 

// Replace existing number values in any element 
$('span.num').number(true, 2); // Formats and replaces existing numbers in those elements. 

Nếu bạn không thích định dạng, hoặc bạn cần phải khoanh vùng, có các thông số khác cho phép bạn chọn cách số được định dạng:

.number (theNumber, decimalPlaces, decimalSeparator, thousandSeparator)

Bạn cũng có thể nhận được jQuery Number Format from GitHub.

+5

Bao gồm tham chiếu bên ngoài tới nguồn tài liệu được đánh giá cao ở đây trên Stack Overflow nhưng điều quan trọng là đưa câu trả lời của bạn vào các đoạn mã quan trọng/có liên quan nhất từ ​​nguồn bên ngoài và cung cấp ngữ cảnh câu trả lời cho câu hỏi. –

+0

Tôi đã sử dụng plugin này một lúc và không thể sử dụng được. Khi bạn nhập bạn may cách các giá trị được tạo thành với độ trễ. Con trỏ nhảy, vì vậy Nếu bạn nhập trường và bạn có 0 trong đó, bạn chọn nó và bắt đầu gõ 220 cusor nhảy và bạn nhận được 202 vv .. thực sự xấu nếu bạn muốn làm các trang chuyên nghiệp. –

1

Đặt http://www.mredkj.com/javascript/numberFormat.html$('.number').formatNumber(); khái niệm này lại với nhau, bạn có thể sử dụng dòng mã sau đây;

ví dụ: <td class="number">1172907.50</td> sẽ được định dạng như <td class="number">1,172,907.50</td>

$('.number').text(function() { 
    var str = $(this).html() + ''; 
    x = str.split('.'); 
    x1 = x[0]; x2 = x.length > 1 ? '.' + x[1] : ''; 
    var rgx = /(\d+)(\d{3})/; 
    while (rgx.test(x1)) { 
     x1 = x1.replace(rgx, '$1' + ',' + '$2'); 
    } 
    $(this).html(x1 + x2); 
}); 
2

Nếu bạn cần phải xử lý nhiều loại tiền tệ, định dạng số khác nhau vv Tôi có thể khuyên autoNumeric. Làm việc một điều trị. Đã sử dụng nó thành công trong vài năm nay.

+0

Tôi thích plugin. hoạt động tốt – Kevin