输入类型编号+ ng-keypress允许' - '标志

时间:2016-07-08 17:06:57

标签: javascript angularjs validation input

我提到了以下输入类型编号。除了数字,我想要接受一些其他键盘字符。因此,我使用ng-pattern接受" null","。"," +"和" - "价值

它还有ng-keypress功能,我已经提到了----> ' dash':189,'减去':109。这些键盘代码可以接受' - '从键盘。

不知怎的,它不接受' - '。我试图设置各种模式,以便' - '被接受了。但它没有。

<input ng-keypress="Num($event)" type="number" step=".1" ng-pattern="/^[+-]?(?:\d+\.?\d*|\d*\.?\d+)[\r\n]*$|^$/" ng-model="dataip"></>


$scope.Num = function (event) {
    var keys = {
        'up': 38, 'right': 39, 'down': 40, 'left': 37,
        'escape': 27, 'backspace': 8, 'tab': 9, 'enter': 13, 'del': 46,
        '0': 48, '1': 49, '2': 50, '3': 51, '4': 52, '5': 53, '6': 54, '7': 55, '8': 56, '9': 57, 'dash':189, 'subtract':109
    };
    for (var index in keys) {
        if (!keys.hasOwnProperty(index)) continue;
        if (event.charCode == keys[index] || event.keyCode == keys[index]) {
            return; //default event
        }
    }
    event.preventDefault();
};

有人可以看看和建议......

1 个答案:

答案 0 :(得分:1)

请查看此ASCII表:enter image description here -的字符代码(Dec列)为45.

以下是JSBin:https://jsbin.com/yipigicuve/edit?html,console,output

BTW我认为你不需要在输入元素上设置type="number"。还请考虑--3---8438之类的输入,目前您正在接受这样的输入。请考虑使用https://github.com/candreoliveira/ngMask之类的库。