价格jquery中的小数位自动格式

时间:2019-02-16 13:54:23

标签: javascript jquery

我正在尝试隐藏oninput字段的小数位,例如

编号从0.00

开始

因此,第一名将是输入字段中的0.00

比我键入1多得多,它应该变成0.01

比我键入2多得多,它应该变成0.12

0多,因此它应该最终变成1.20

当我输入0时,它应该变成12.00

0.010.121.2012.00

我尝试了一些已经在SO中给出但没有成功的方法。

如果可以的话,请建议我其他方法。谢谢。

我试图这样

$(document).on('keyup','.price',function(e){
		var value = $(this).val();
		if(value.length <= 6) {
			if(e.which == 190 || e.which == 46 || e.which == 44 || e.which == 188){
				var amountDots = 0;
				var amountCommas = 0;
				if(value.indexOf(',') > -1){
					amountCommas = value.match(/,/gi).length;
				}
				if(value.indexOf('.') > -1){
					amountDots = value.match(/./gi).length;
				}
				if((amountDots >= 1 && amountCommas >= 1) || amountCommas > 1 || value.length == 1){
					$(this).val(value.substr(0,value.length - 1));
					return false;
				}
				else{
				 	$(this).val(value.substr(0, value.length - 1) + ',');
				}
			}
      
			$(this).val(value/100); //here is the value will insert
      
		} else {
			$(this).val(value.substr(0,value.length - 1))
			return false;
		}
	});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" class="price" />

3 个答案:

答案 0 :(得分:1)

好的,删除字符时完全不同的解决方案:

$(document).on('keypress','.price',function(e){
    var char = String.fromCharCode(e.which);
    if(isNaN(char)) char = '';
    var value = $(this).val() + char;
    value = value.replace('.','');
    $(this).val((value/100).toFixed(2));
    if(!isNaN(char)) return false;
}).on('keyup','.price',function(e){
    var value = $(this).val();
    value = value.replace('.','');
    $(this).val((value/100).toFixed(2));
});

https://jsfiddle.net/14shzdo5/

答案 1 :(得分:0)

以下逻辑适用于基本方案。您可能需要单独处理清除文本输入。

$(document).ready(function() {
  $("#my-input").on('keyup', function(e) {
    
    var v = String.fromCharCode(e.keyCode);

    if (!isNaN(v)) {
      var dv = $("#my-display").val();
      $("#my-display").val(dv + '' + v);
      $(this).val(($("#my-display").val() / 100).toFixed(2));
    }
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script>
<input type="text" id="my-input" />
<input type="hidden" id="my-display" />

答案 2 :(得分:0)

对于每个新的击键,假设它是一个数字,请将其附加到末尾,乘以10并显示结果。