angular指令不适用于输入类型=" number"

时间:2016-10-04 14:47:38

标签: javascript angularjs validation angularjs-directive

以下代码仅在输入类型为文本时有效,并且在类型为数字时不起作用。

<div ng-app="myApp" ng-controller="myCtrl as model">
 <input type="text"  ng-model="cero" ng-decimal   >   
</div> 


angular
    .module("myApp",[])
    .controller('myCtrl', function($scope){
        var model=this;
    })
    .directive('ngDecimal', function ($parse) {
        var linkFunction =function(scope, element, attrs){     
            element.bind("keypress", function(event) {
                if(event.which === 13) {    
                    scope.$apply(function(){
                        scope.$eval(attrs.format, {'event': event});
                        if(scope.cero===undefined || scope.cero===''){
                            scope.cero="0.", 
                            event.preventDefault();
                        }else{

                        }
                    });
                }
            });
        };
        return{
            restrict : 'A',
            scope:{
                cero: '=ngModel'
            },
            link: linkFunction
        }
    });

我需要帮助的是将类型更改为数字并仍然使代码工作。代码也在CodePen

2 个答案:

答案 0 :(得分:1)

在else条件中添加此内容。

scope.cero = parseFloat(scope.cero).toFixed(2);

将字符串转换为十进制

以下是代码:working code

答案 1 :(得分:1)

更新了笔:http://codepen.io/anon/pen/QKOVkP?editors=1011

使用数字,您无法指定约束

scope.cero = "0." // string value

type="number"所以用你想要分配的最小数字替换它,也许

scope.cero = parseFloat("0.01")  // parseFloat("0.") won't work