gpt4 book ai didi

javascript - 仅用于输入数字的 Angular Directive(指令)

转载 作者:太空宇宙 更新时间:2023-11-04 16:12:08 26 4
gpt4 key购买 nike

我正在创建一个指令来限制输入框只接受数字。它应该接受 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+ 添加到 /[^0-9]+/g 即可删除前导零:

var transformedInput = inputValue.replace(/^0+|[^0-9]+/g, ''); 
// ^^^

参见 updated fiddle .

^0+ 匹配字符串开头 (^) 的 1 个或多个 (+) 零。

关于javascript - 仅用于输入数字的 Angular Directive(指令),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34400748/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com