我正在创建一个directive
来限制输入框以仅接受数字。它应该接受1-9999999999,但没有前导0.它正在工作但输入第一个数字后它接受所有数字和字符。请帮我解决这个问题。它应该接受10,但不能接受01.对于我的代码是,
HTML:
<input type="text" ng-model="number" required="required" numbers-only="numbers-only" />
JS:
angular.module('myApp', []).directive('numbersOnly', function(){
return {
require: 'ngModel',
link: function(scope, element, attrs, modelCtrl) {
modelCtrl.$parsers.push(function (inputValue) {
if (inputValue == undefined) return ''
var transformedInput = inputValue.replace(/^[^1-9]*/g, '');
if (transformedInput!=inputValue) {
modelCtrl.$setViewValue(transformedInput);
modelCtrl.$render();
}
return transformedInput;
});
}
};
});
function MyCtrl($scope) {
$scope.number = ''
}
FIDDLE:FIDDLE
答案 0 :(得分:3)
只需向^0+
添加替代/[^0-9]+/g
,即可删除前导零:
var transformedInput = inputValue.replace(/^0+|[^0-9]+/g, '');
// ^^^
请参阅updated fiddle。
^0+
匹配字符串start(+
)处的1个或多个(^
)个零。
答案 1 :(得分:0)
答案 2 :(得分:0)
你需要从你的模式中删除第一个PointText
。这是updated fiddle
使用此 -
^
您可以使用以下内容在开始updated fiddle -
时限制0replace(/[^1-9]*/g, '');