首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >仅数字输入,Angular IE11

仅数字输入,Angular IE11
EN

Stack Overflow用户
提问于 2017-09-06 22:59:40
回答 2查看 1.3K关注 0票数 1

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

代码语言:javascript
复制
<input type="number"/>

我也尝试过,但没有成功。

代码语言:javascript
复制
<input type="text" pattern="[0-9]*"/>

有什么办法解决这个问题吗?IE11肯定是有魔力的东西。

我自己解决了:

已添加

代码语言:javascript
复制
<input type="text" (keypress)="isNumberKey($event)"/>

然后在我的组件中:

代码语言:javascript
复制
  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;
  }
EN

回答 2

Stack Overflow用户

发布于 2018-09-08 04:23:07

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

代码语言:javascript
复制
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‘,或者根本不添加。

代码语言:javascript
复制
<input type="number" limit-to="4">

希望这能有所帮助,很抱歉今年晚了一次回复。干杯!

票数 1
EN

Stack Overflow用户

发布于 2017-09-06 23:27:53

你的第二个例子已经非常接近了。这将会起到作用:

代码语言:javascript
复制
<input type="text" pattern="^[0-9]*$"/>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46078566

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档