请看上一个问题: 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;
});
}
};
}]);
我很感激有关如何改变小提琴指令的任何建议,这样你就不必按两次退格键来清除输入。
答案 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