javascript - Angular Material 输入编号更改格式

标签 javascript angularjs angular-material

在我的 Angular Material 应用程序中,我有一个验证字段:

<input type="number" ng-model="myValue"
       name="myValue" 
       min="0" max="100" 
       ng-pattern="/^[0-9]\d*(\.\d+)?$/" required>

它工作正常。但现在我需要让它允许用户输入 .75 而不是 0.75

所以问题是如何应用我的过滤器:

if( myValue.substring(0,1) == "." ){
    myValue = "0" + myValue;
}

在 Angular Material ng-patterntype="number" 验证之前

最佳答案

您可以使用 $filter$formatters$parsers 编写一些指令:

app.directive('parser', ['$filter',
    function($filter) {
        return {
            restrict:'A',
            require: 'ngModel',
            link: function(scope, element, attrs, ctrl) {

                ctrl.$formatters.unshift(function (a) {
                return $filter('myFilter')(ctrl.$modelValue)
            });

             ctrl.$parsers.unshift(function (viewValue) {
             element[0].value = $filter('myFilter')(element[0].value);
             return element[0].value;
            });
            }
        };
    }
]);

app.filter('myFilter', [
    function() {
        return function(input) {

           if( input && input.substring(0,1) == "." ){
             input = "0" + input;
           }
            return input;
        };
    }
]);

DEMO Plunkr


但是你不能使用 number 类型,因为我记得 . 不受支持并且不会解析为整数

希望它能给你指明方向

关于javascript - Angular Material 输入编号更改格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45678912/

相关文章:

javascript - 防止数组中的 Angular 返回重复字符串

javascript - div 底部带有消息的聊天系统

javascript - 如何使用 CoffeeScript 在同一个循环中创建两个数组?

mysql - CakePHP 不保存长文本

angular - 每行的 mat-table 中的 formGroup 数组

javascript - 如何从 Google Places API 获取国家代码

javascript - D3 和​​ AngularJS 指令

javascript - 客户端类似 Mongoose 的模式定义

angular - Bootstrap Grid System 在 mat-expansion-panel 中不起作用

css - Angular Material 表 - 表内边框