AngularJS格式化程序 - 如何显示空白而不是零

时间:2014-09-01 05:13:04

标签: javascript angularjs input angularjs-directive

请看上一个问题: Format input value in Angularjs

我遇到的问题是(就像上面问题答案中的小提琴一样,即http://jsfiddle.net/SAWsA/811/),在输入中留下的单个数字上退格会导致零出现而不是清除输入。

小提琴指令代码:

fessmodule.directive('format', ['$filter', function ($filter) {
    return {
        require: '?ngModel',
        link: function (scope, elem, attrs, ctrl) {
            if (!ctrl) return;


            ctrl.$formatters.unshift(function (a) {
                return $filter(attrs.format)(ctrl.$modelValue)
            });


            ctrl.$parsers.unshift(function (viewValue) {
                var plainNumber = viewValue.replace(/[^\d|\-+|\.+]/g, '');
                elem.val($filter('number')(plainNumber));
                return plainNumber;
            });
        }
    };
}]); 

我很感激有关如何改变小提琴指令的任何建议,这样你就不必按两次退格键来清除输入。

1 个答案:

答案 0 :(得分:1)

你可以简单地在你的指令中添加一个if-else条件,它就完成了......

        ctrl.$parsers.unshift(function (viewValue) {
            console.log(viewValue);
            if(viewValue){
                var plainNumber = viewValue.replace(/[^\d|\-+|\.+]/g, '');
                elem.val($filter('number')(plainNumber));
                return plainNumber;
            }else{
                return '';
            }
        });

此处正在运作JSFIDDLE