【问题标题】:Unable to set only numbers input [duplicate]无法仅设置数字输入[重复]
【发布时间】:2015-05-05 17:34:28
【问题描述】:

我正在尝试设置一个只能接受数字的输入,但仍然可以在其中输入字母,为什么?

               <input type="number"
                      pattern="[0-9]"
                      ng-model="slip.risk"
                      class="form-control"
                      placeholder="Risk"
                      ng-change="riskWinCalculations(slip, 'RISK')">

这是一个 Angularjs 应用程序,所以我不知道这是问题还是什么。

【问题讨论】:

标签: javascript angularjs html


【解决方案1】:

pattern 不会阻止字符被输入到输入元素中,它只会触发验证。

为了防止输入非数字字符,您可以使用截取输入值的指令。

angular.module('components', []).directive('numbersOnly', function () {
    return {
        restrict: 'A',
        require: 'ngModel',
        link: function (scope, element, attrs, ngModelCtrl) {
            ngModelCtrl.$parsers.push(function (inputValue) {
                var transformedInput = inputValue.replace(/\.\.+/g, '.');
                ngModelCtrl.$setViewValue(transformedInput);
                ngModelCtrl.$render();

                return inputValue;
            });
        }
    }
});

Here's a JsFiddle of the working directive

【讨论】:

  • 我的朋友,谢谢! :)
  • 嘿,还有一个问题,我需要用户能够输入“.”,例如 156.152。所以?
  • 我更新了正则表达式以允许使用小数,但它允许连续使用多个小数
  • 使用transformedInput = inputValue.replace(/\.\.+/g, '.'); 删除多余的句点。
  • 感谢@Charles。我用你的建议更新了 JsFiddle 和我的答案。
猜你喜欢
  • 2017-03-22
  • 2023-03-22
  • 2013-05-17
  • 2015-08-01
  • 2015-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多