限制输入类型编号

时间:2016-11-15 09:45:14

标签: javascript html angularjs html5 angular-material

我无法将输入类型编号限制为正数。正如帖子中所述:HTML5: number input type that takes only integers?正在寻找step =“1”的答案,因为它允许用户输入{e。,}。

我正在使用我在相关帖子(How do I restrict an input to only accept numbers?)上找到的指令,我刚刚添加了一些控制台日志和一个toString():

当输入类型是文本时它工作正常,但是当输入类型是数字并且我键入“e”,“或”时,它从不被调用。

对于我在这里失踪的任何想法?我想使用input type = number来使箭头能够使用角度材料选择一个值。

function restrictInput($mdDialog) {
  return {
    restrict: 'A',
    require: 'ngModel',
    link: function(scope, element, attr, ctrl) {
      function inputValue(value) {
        console.log("hello ! :", value)
        var val = value.toString();
        console.log("goodbye ! : ", val)
        if (val) {
          var digits = val.replace(/[^0-9]/g, '');
          console.log("digits :", digits)
          console.log("val : ", val)
          if (digits !== val) {
            ctrl.$setViewValue(digits);
            ctrl.$render();
          }
          return parseInt(digits, 10);
        }
        return undefined;
      }
      ctrl.$parsers.push(inputValue);
    }
  };
}

Html是这样的:

<md-input-container flex class="md-input-has-placeholder">
  <label>Années d'expérience stage inclus</label>
    <input
      type="number"
      required
      step="1"
      restrict-input
      min="0"
      name="Expérience stage"
      ng-model="model">
    <div ng-messages="form['Expérience stage'].$error" md-auto-hide="false">
      <div ng-message="required">Requis</div>
    </div>
</md-input-container>

修改

使用getter setter(ng-model-options =“{getterSetter:true}”)在这里完美地完成了。

1 个答案:

答案 0 :(得分:2)

如果只需要限制输入类型“number”以仅接受整数,则不需要使用指令。

<input type="number" ng-pattern="/^(0|[1-9][0-9]*)$/" >

您可以在应用中输入以上代码吗?

这只接受数字。