2013-08-19 54 views
13

Tôi đang sử dụng rất nhiều điều khiển nhập HTML 5 trong các trang của mình. Một trong những yêu cầu của tôi là có một hộp văn bản với tính năng tiền tệ. Đối với điều này tôi đã cố gắng này:HTML 5 Định dạng tiền tệ

<input type="number" pattern="(d{3})([.])(d{2})" /> 

này cho phép tôi để gõ giá trị như 10,000.00

Nhưng vẫn không đáp ứng được tất cả mọi yêu cầu của tôi của nó. Tôi muốn rằng nếu người dùng nhập 10000 , nó sẽ chuyển đổi thành định dạng tiền tệ như 10.000 onblur.

Và khi tôi đọc giá trị từ loại đầu vào trong Javascript của tôi, nó sẽ cho tôi một phao thay vì giá trị chuỗi mà tôi không thể sử dụng để tính toán mà không phân tích cú pháp.

+0

'input type = "number" .value' sẽ là một chuỗi trong mọi trường hợp. Bạn cần phải phân tích cú pháp tại một số điểm ... – Teemu

+0

loại đầu vào = "số" .giá trị sẽ là chuỗi trong mọi trường hợp. nhưng đơn giản có parseFloat (input type = "number" .value) có thể đã làm việc trong mọi trường hợp. – user2561997

Trả lời

17

Dưới đây là một cách giải quyết với thêm một input type="text":

http://jsfiddle.net/UEVv6/2/

HTML

<input type="text" id="userinput" pattern="[0-9]*"> 
<br> 
<input type="number" id="number"> 

JS

document.getElementById("userinput").onblur =function(){  

    //number-format the user input 
    this.value = parseFloat(this.value.replace(/,/g, "")) 
        .toFixed(2) 
        .toString() 
        .replace(/\B(?=(\d{3})+(?!\d))/g, ","); 

    //set the numeric value to a number input 
    document.getElementById("number").value = this.value.replace(/,/g, "") 

} 

regex là từ đây How to print a number with commas as thousands separators in JavaScript

+0

Cảm ơn điều này đã giải quyết được vấn đề của tôi cùng với giải pháp Amith dưới đây. – user2561997

2

thử này - http://jsbin.com/azOSayA/1/edit

function commaSeparateNumber(val){ 
    while (/(\d+)(\d{3})/.test(val.toString())){ 
     val = val.toString().replace(/(\d+)(\d{3})/, '$1'+','+'$2'); 
    } 
    return val; 
    } 
$('#elementID').focusout(function(){ 

    alert(commaSeparateNumber($(this).val())); 
}); 
+0

Cảm ơn Amith. Bạn đã giải quyết được vấn đề của tôi. – user2561997

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