首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >angularjs:只允许在文本框中键入数字

angularjs:只允许在文本框中键入数字
EN

Stack Overflow用户
提问于 2013-04-19 03:10:40
回答 18查看 212.6K关注 0票数 69

在angularjs中,是否有任何功能只允许在文本框like中键入数字

EN

回答 18

Stack Overflow用户

发布于 2013-10-30 14:07:07

此代码显示了如何防止输入非数字符号的示例。

代码语言:javascript
复制
angular.module('app').
  directive('onlyDigits', function () {

    return {
        restrict: 'A',
        require: '?ngModel',
        link: function (scope, element, attrs, modelCtrl) {
            modelCtrl.$parsers.push(function (inputValue) {
                if (inputValue == undefined) return '';
                var transformedInput = inputValue.replace(/[^0-9]/g, '');
                if (transformedInput !== inputValue) {
                    modelCtrl.$setViewValue(transformedInput);
                    modelCtrl.$render();
                }
                return transformedInput;
            });
        }
    };
});
票数 65
EN

Stack Overflow用户

发布于 2014-09-17 17:31:47

HTML

代码语言:javascript
复制
 <input type="text" name="number" only-digits>

//只需键入123

代码语言:javascript
复制
  .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);
      }
    };
});

//类型: 123或123.45

代码语言:javascript
复制
 .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.split('.').length > 2) {
              digits = digits.substring(0, digits.length - 1);
            }

            if (digits !== val) {
              ctrl.$setViewValue(digits);
              ctrl.$render();
            }
            return parseFloat(digits);
          }
          return undefined;
        }            
        ctrl.$parsers.push(inputValue);
      }
    };
 });
票数 42
EN

Stack Overflow用户

发布于 2015-08-22 04:32:17

我只是在我的输入指令中使用了ng-keypress。

HTML:

代码语言:javascript
复制
<input type="text" ng-keypress="filterValue($event)"/>

JS:

代码语言:javascript
复制
$scope.filterValue = function($event){
        if(isNaN(String.fromCharCode($event.keyCode))){
            $event.preventDefault();
        }
};
票数 37
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16091218

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档