Javascript 如何删除值的格式化掩码
我想将格式化的maskeither“$”或“S/”删除到值中。我有两个角度指示。这些是和 在第二个指令中,符号根本不影响ng模型,而是影响ng-model的第一个指令。第一个指令删除符号,但如果文本框包含ng更改函数,则它调用ng更改函数,然后它将进入指令。因此,符号对ng模型有影响 第二个指令是符号对ng模型没有任何影响。像这样,我也需要第一个指令 第二项指令:- 第一项指令:-Javascript 如何删除值的格式化掩码,javascript,angularjs,angular-directive,Javascript,Angularjs,Angular Directive,我想将格式化的maskeither“$”或“S/”删除到值中。我有两个角度指示。这些是和 在第二个指令中,符号根本不影响ng模型,而是影响ng-model的第一个指令。第一个指令删除符号,但如果文本框包含ng更改函数,则它调用ng更改函数,然后它将进入指令。因此,符号对ng模型有影响 第二个指令是符号对ng模型没有任何影响。像这样,我也需要第一个指令 第二项指令:- 第一项指令:- 如果我正确理解了您的问题,您希望删除$和/或S\。来自表示数字的字符串 希望这一切都能顺利进行: plainNum
如果我正确理解了您的问题,您希望删除$和/或S\。来自表示数字的字符串 希望这一切都能顺利进行:
plainNumber.replace(/(\S\/\.|\$)/g, '');
第一个指令是删除符号。但是,如果文本框包含任何事件,如ng change,则它调用ng change,然后调用指令。因此,天然气变化对天然气模型产生了影响。如果您遵守第二条指令。它对ng模型没有任何影响,即使它包含ng更改。您需要将函数设置为过滤器,或者为变量添加一个手表,每次值更改时,您都必须重新运行替换函数。我对angular比较熟悉,您能给我一个plnknr示例吗
app.directive('format', ['$filter', '$compile', function($filter, $compile) {
return {
require: 'ngModel',
scope: {
val: '=val'
},
link: function(scope, elem, attrs, ctrl) {
if (!ctrl) return;
ctrl.$formatters.unshift(function(a) {
if (attrs.symbol == '$')
return $filter(attrs.format)(ctrl.$modelValue, '$')
else
return $filter(attrs.format)(ctrl.$modelValue)
});
scope.$watch(function() {
return elem.val()
}, function(newVal, oldVal) {
var a = newVal;
var plainNumber = a.split('.').filter(function(e) {
return (e.length > 0);
}).join('.');
var i = 0;
if (isNaN(parseFloat(plainNumber))) {
i = (attrs.symbol == '$') ? 1 : 3;
}
var num = plainNumber.substring(i, plainNumber.length).replace(/,/g, '');
if (attrs.symbol == '$')
elem.val($filter('currency')(num, attrs.symbol));
else
elem.val($filter('currency')(num));
var n = parseFloat(num);
scope.val = Number(n);
if (!scope.$$phase) {
$compile(elem.contents())(scope)
}
});
}
};
// controller
}])
plainNumber.replace(/(\S\/\.|\$)/g, '');