2014-09-01 62 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

相關問題