2017-04-21 14 views
3

次の入力を小数点以下2桁にして2桁しか使用できないようにするにはどうすればよいですか?小数点以下2桁の数値を強制的に入力する

たとえば、値が「1」の場合、自動的に「1.00」に変更され、「1.111」は「1.11」に変更されます。

私は既にstep = "0.01"を試しましたが、これはうまくいきません。

JSFiddle:https://jsfiddle.net/eub68raq/

HTML:私が試した

<input data-number="Quantity must be a number" data-required="Unit price required" min="0" step="0.01" id="unitPrice" value="" type="number" name="unitPrice" placeholder="Unit Price"/> 

JS: -

var number = $('input#unitPrice').val(); 
$('input#unitPrice').innerHTML = parseFloat(Math.round(number * 100)/100).toFixed(2); 
+0

http://numeraljs.com/ –

答えて

3

あなたは以下のようにそれを行うことができます: -

$(document).ready(function(){ 
 
    $('input#unitPrice').blur(function(){ 
 
    var num = parseFloat($(this).val()); 
 
    var cleanNum = num.toFixed(2); 
 
    $(this).val(cleanNum); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input data-number="Quantity must be a number" data-required="Unit price required" min="0" step="0.01" id="unitPrice" value="" type="number" name="unitPrice" placeholder="Unit Price"/>

+0

パーフェクト。必要に応じて正確に動作します –

+0

@Nickはあなたを助けてうれしいです:) –

2

はこれを試してみてください:丸めのためにあなたのコードを使用して

parseFloat(number.toFixed(2)); 
0

、あなたが望む事はようになります。これは:

$(document).ready(function(){ 
    $('input#unitPrice').change(function(){ 
     $(this).val(parseFloat(Math.round($(this).val() * 100)/100).toFixed(2)); 
    }); 
}); 

keyupを使用することは、ユーザーが入力値を変更できないため、非常に幸運な選択ではありません。彼が何かを書くとすぐに、それは小数点以下2桁に変更されます。彼が数字を削除しようとすると、戻されます。

キーアップの動作をしたい場合、値を修正するには遅延が発生する必要があります(たとえばsetIntervalを使用)。

関連する問題