0

我有一個指令可以轉換成2個小數位(輸入數字文本框)和 它工作正常,但我想用零填充整個數字。整個數字鍵盤零點

任何人都知道如何用填充零實現整數?下面的例子。

2 - > 2.00 - 沒做
10.666 - > 10.67 - 做

app.directive('toPrecision',['$filter', function ($filter) { 
    return { 
     replace: false, 
     restrict: 'A', 
     link: function(scope, element, attr) { 
      var input = angular.element(element); 
      var precisionValue = attr.toPrecision; 
      input.on('keyup', function() { 
       var parsed = parseFloat(input.val()); 
       if (!isNaN(parsed)) { 
        if (parseInt(parsed, 10) !== parsed && String(parsed).split('.')[1].length > 2) { 
         var result = parsed.toFixed(precisionValue); 
         input.val(result); 
        } 
       } 
      }); 
     } 
    } 
}]); 

HTML

<input type="number" class="form-control" ng-model="rate" to-precision="2" min="0" step="1"> 
+0

您的意思是「float input」,對吧? – Maher

+0

可能重複的[Javascript:將舍入數字格式化爲N小數](http://stackoverflow.com/questions/2221167/javascript-formatting-a-rounded-number-to-n-decimals) – djechlin

+0

這是重複的這個問題:http://stackoverflow.com/questions/2221167/javascript-formatting-a-rounded-number-to-n-decimals – djechlin

回答

1

截至重寫我想要的指令。

app.directive('toPrecision', function() { 
return { 
    replace: false, 
    restrict: 'EA', 
    require: 'ngModel', 
    link: function(scope, element, attr, ngModelCtrl) { 
     var input = angular.element(element); 
     var precisionValue = attr.toPrecision; 

     ngModelCtrl.$parsers.push(function(value) { 
      var clean = value.replace(/[^-0-9\.]/g, ''); 
      if (value !== clean) { 
       ngModelCtrl.$setViewValue(clean); 
       ngModelCtrl.$render(); 
      } 
      return clean; 
     }); 

     ngModelCtrl.$formatters.push(function(value) { 
      if (angular.isUndefined(value)) { 
       return ""; 
      } 
      var parsed = parseFloat(value); 
      return parsed.toFixed(precisionValue); 
     }); 

     input.on('blur', function() { 
      var parsed = parseFloat(input.val()); 
      if (!isNaN(parsed)) { 
       var result = parsed.toFixed(precisionValue); 
       input.val(result); 
       ngModelCtrl.$setViewValue(result); 
      } 
     }); 

    } 
}}); 
0

這裏要做到這一點,從我投票決定關閉爲重複的答案採取代碼:

var s = number.toString(); 
if (s.indexOf('.') == -1) s += '.'; 
while (s.length < s.indexOf('.') + 4) s += '0'; 
+0

我不認爲這是我想要的 – ove

+0

我喜歡每當用戶鍵入一個整數像2它將它轉換爲2.00 – ove

0

讓數學做它,試試這個。

if (!isNaN(parsed)) { 
    parsed += Math.pow(10, -1 * (precisionValue + 2)); // 2 + 0.0001 
    var result = parsed.toFixed(precisionValue); // 2.00 
    input.val(result); 
} 

fiddle