仅限数字输入,Angular IE11

时间:2017-09-06 14:59:40

标签: angular internet-explorer internet-explorer-11

我有一个仅接受数字的输入字段,但这仅适用于chrome。当我在IE11中尝试相同的输入字段时,它接受所有类型的输入。

<input type="number"/>

我也尝试过没有胜利。

<input type="text" pattern="[0-9]*"/>

有什么解决方法吗? IE11肯定是神奇的东西。

解决了自己:

<input type="text" (keypress)="isNumberKey($event)"/>

然后在我的组件中:

  isNumberKey($event) {
    let charCode = ($event.which) ? $event.which : $event.keyCode;
    console.log('Char code is ---> ', charCode);
    if (charCode > 31 && (charCode < 48 || charCode > 57))
      return false;

    return true;
  }

2 个答案:

答案 0 :(得分:1)

我通过创建一条指令来解决类似的问题,该指令允许一个特定的字符限制以及只允许数字。

appName.directive("limitTo", [function() {
return {
    restrict: "A",
    link: function(scope, elem, attrs) {
        var limit = parseInt(attrs.limitTo);
        angular.element(elem).on("keypress", function(e) {
            if (this.value.length == limit) {
                if(e.which != 8){
                    e.preventDefault();
                }
            }
            if((isNaN(String.fromCharCode(e.charCode)) || e.charCode === 32 || e.charCode === 69) && e.which != 8){
                e.preventDefault();
            }
        });
    }
}

这将允许您限制非数字的任何内容(包括空格,“ e”和破折号)。只需添加带有字符数限制或完全不限制字符的指令“ limit-to”。

<input type="number" limit-to="4">

希望这会有所帮助,对于您迟到的回复表示歉意。干杯!

答案 1 :(得分:0)

你的第二个例子非常接近。这样就可以了:

<input type="text" pattern="^[0-9]*$"/>