我想在AngularJS应用程序中创建一个输入数字框,用户不应该在该框上键入十进制数字.(一个整数输入框)

I want to create an input number box in AngularJS app on which a user should not be able to type decimal numbers. (an integer number input box)

本文关键字:输入 一个 不应该 整数 十进制数字 用户 应用程序 AngularJS 数字 创建      更新时间:2023-09-26

这个想法是,当用户试图在数字输入框中键入数字时,不应该输入小数点。我想在控制器上捕获$事件,然后更改输入控件上的数据。但这对我不起作用。我在angular应用程序网页上有这个输入框:

<input type="number" ng-keydown="checkfordecimal($event, age)" min="1" max="125" name="inputage" ng-required="true" ng-model="model.age" />

控制器:

$scope.checkfordecimal = function($event, age)
{
   if($event.which === 110 || $event.which === 190)
   {
    //do something
   }
 }

你能想出更好的方法来实现这一点吗?

这应该是一个directive
以下是我在这里看到的一个例子(来源于@My Mai):

  app.directive('onlyDigits', function () {
    return {
      require: 'ngModel',
      restrict: 'A',
      link: function (scope, element, attr, ctrl) {
        function inputValue(val) {
          if (val) {
            var digits = val.replace(/[^0-9]/g, '');
            if (digits !== val) {
              ctrl.$setViewValue(digits);
              ctrl.$render();
            }
            return parseInt(digits,10);
          }
          return undefined;
        }            
        ctrl.$parsers.push(inputValue);
      }
    };
});

用法:

<input type="text" name="number" only-digits>

使用RegEx可以杀死所有非十进制字符,如下所示:

$scope.checkfordecimal = function(){
   $scope.model.age = $scope.model.age.replace(/'D/g, '');//Remove all non decimal characters and store it in the model
}
  • 'D的意思是"查找所有非数字"
  • g标志表示"全局"或"检查每个字符"

然后,每个匹配项(如点)都将被一个空字符串(''

替换
相关文章: