angular directive ignore non-numeric input

前端 未结 4 757
北荒
北荒 2020-11-30 06:37

I have to write some code for IE8. I have an ng-repeat creating a table filled with:



        
4条回答
  •  萌比男神i
    2020-11-30 07:08

    HTML:

    
    

    Directive:

    app.directive('productionQty', function() {
      return {
        require: 'ngModel',
        link: function (scope, element, attr, ngModelCtrl) {
          function fromUser(text) {
            var transformedInput = text.replace(/[^0-9]/g, '');
            console.log(transformedInput);
            if(transformedInput !== text) {
                ngModelCtrl.$setViewValue(transformedInput);
                ngModelCtrl.$render();
            }
            return transformedInput;  // or return Number(transformedInput)
          }
          ngModelCtrl.$parsers.push(fromUser);
        }
      }; 
    });
    

    Plunker

    See also filters on ng-model in an input. My answer above is modeled off pkozlowski.opensource's answer.

    I looked at ng-pattern, but it does not filter what is shown in the textbox. It sets $scope.qty1 to undefined, but the undesired characters are visible in the textbox.

提交回复
热议问题