AngularJS:仅允许数字作为输入

时间:2017-03-19 19:43:32

标签: javascript angularjs

我需要一个允许(并显示)仅数字字符作为输入的输入字段。我需要这个值是整数所以不是'。'允许角色。如何在angularjs中做到这一点?如果可能,如果在文本字段中粘贴字符串,如何仅显示数字? 编辑:type = number允许点,我想只允许整数

6 个答案:

答案 0 :(得分:3)

试试这个可以按照你的期望工作。

var numInput = document.querySelector('input');

numInput.addEventListener('input', function(){
    var num = this.value.match(/^\d+$/);
    if (num === null) {
      this.value = "";
    }
});
<input type="number" min="0" step="1"/>

答案 1 :(得分:1)

查看<input type="number"> https://www.w3schools.com/html/html_form_input_types.asp

否则,您需要创建自己的逻辑来处理用户输入。如果您不想使用HTML5输入,那么这是我的建议。

在angular2组件中,创建

<input [ngModel]="your_variable` (ngModelChange)="changeEvent($event)") />

changeEvent = (event) => {
//logic to handle different formats of your_variable
}

答案 2 :(得分:0)

您只需使用 HTML 即可,而无需使用任何角度方法,例如

<input type="number" min="0" step="1"/>

使用 HTML 的另一种方法是使用pattern属性

<input type="text" pattern="\d*" />

答案 3 :(得分:0)

您可以使用ng-pattern =&#34; / ^ [0-9] \ d * $ /&#34;对于该文本框,但类型应为该文本,您也可以使用下面的代码仅检查数字。

<input type="number" min="0"/>

答案 4 :(得分:0)

您可以使用ng-pattern =&#34; / ^ [0-9] {1,} $ /&#34;和输入类型&#34;文本&#34;只允许数字。

答案 5 :(得分:0)

**Directive: (with input type=text)**

app.directive('onlyNumbers', function () {
    return  {
        restrict: 'A',
        link: function (scope, elm, attrs, ctrl) {
            elm.on('keydown', function (event) {
                if(event.shiftKey){event.preventDefault(); return false;}
                //console.log(event.which);
                if ([8, 13, 27, 37, 38, 39, 40].indexOf(event.which) > -1) {
                    // backspace, enter, escape, arrows
                    return true;
                } else if (event.which >= 48 && event.which <= 57) {
                    // numbers 0 to 9
                    return true;
                } else if (event.which >= 96 && event.which <= 105) {
                    // numpad number
                    return true;
                } 
                // else if ([110, 190].indexOf(event.which) > -1) {
                //     // dot and numpad dot
                //     return true;
                // }
                else {
                    event.preventDefault();
                    return false;
                }
            });
        }
    }
});


**HTML:**

<input type="text" only-numbers>