2013-08-19 34 views
13

Sayfalarımda çok sayıda HTML 5 giriş denetimi kullanıyorum. Benim gereksinimimden biri, para birimi özellikli bir metin kutusuna sahip olmak.HTML 5 Para birimi biçimi

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

Bu beni 10.000,00

Ama yine tüm karşılamayan tüm gereksinimleri gibi değerleri yazın sağlar: Bunun için ben bu çalıştı. Kullanıcı 10000 'da yazıyorsa, bunu 10.000 onblur gibi bir para birimi biçimine dönüştürmesini istiyorum.

Javascript'imdeki giriş türündeki değeri okuduğumda, ayrıştırma yapmadan hesaplayamayacağım bir dize değeri yerine bir kayan nokta vermem gerekir.

+0

'girdi tipi her durumda bir dize olacaktır .value' = "sayı". Yine de bir noktada onu ayrıştırmanız gerekiyor ... – Teemu

+0

giriş tipi = "sayı". Değer her durumda dize olacaktır. ancak parseFloat (input type = "number" .value) 'ye sahip olmak basittir. – user2561997

cevap

17

ek input type="text" ile geçici bir çözüm var:

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 buradan ise How to print a number with commas as thousands separators in JavaScript

+0

Teşekkürler Bu, bunun altındaki Amith çözümüyle bağlantılı problemimi çözdü. – user2561997

2

bu deneyin - İşte 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

Teşekkürler Amith. Benim problemimi çözdün. – user2561997

İlgili konular