2014-09-01 59 views
0

空白请参阅此前面的问题: Format input value in AngularjsAngularJS格式化 - 如何显示,而不是零

我遇到的问题是,(这是在回答上述问题的小提琴的情况下,即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; 
      }); 
     } 
    }; 
}]); 

我希望如何改变在小提琴指令的任何建议,使您不必打两次退格键清除输入。

+0

一点点混乱。我会重申。这个问题目前正在审查中,因为太过模糊或偏离主题。 – 2014-09-01 14:15:59

+1

我编辑了这个问题,试图使它更清晰。事实上,作为对上一个问题的评论会更好,但我没有足够的代表就这个问题发表评论。我会回过头来回答上一个问题,并附上wickY26提供的小提琴的链接。 – Andrew 2014-09-02 02:15:56

回答

0

,你可以简单地把一个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

+0

谢谢@ wickY26!我曾尝试过一个简单的,但显然错过了一些东西。 – Andrew 2014-09-01 10:59:38