javascript - 无法设置仅数字输入

标签 javascript angularjs html

<分区>

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

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

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

最佳答案

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

要防止输入非数字字符,您可以使用拦截正在键入的值的指令。

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

关于javascript - 无法设置仅数字输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30059611/

相关文章:

javascript - 如何让js知道新创建的html元素

Javascript悬停单独的选择

javascript - 使用纯 Javascript 取消选中单选按钮

javascript - scope.$watch 在 Angular Directive(指令)中不起作用

javascript - Angular.js 范围变量未定义,ng-repeat 初始状态

javascript - 如何将多数组参数传递给 jquery for 循环

Javascript + 如何获取选择的父节点的索引 + IE 以外的浏览器

java - angularjs 和 Java 中的 Twitter 登录集成

javascript - 单击链接时如何显示div

javascript - 如何在 JavaScript 中使用 getElementById ("").style.color 更改对象的颜色