一尘不染

防止在输入数字中键入字母“ e”和点

angularjs

我有一个简单的输入数字,例如:

<input type="number"/>

尝试输入数字或字母“ e”以外的任何内容时,它不起作用,但是当我输入字母“ e”时,它起作用。

我检查了w3.org规范,它清楚地表明可以使用常规表示法(例如:10.2)或科学表示法(例如:1e2)来键入浮点数。

所以我的问题是:有没有一种方法可以防止用户键入e字母和点。用另一种方式说:有没有一种方法可以使输入数字 接受 整数

我有一个用Angular指令执行此操作的想法,我将输入该属性作为输入数字的属性,但是我真的不知道如何使它工作。

编辑 :我想做的是模拟当我们尝试在字母中键入除“ e”或“。”以外的任何其他字母时所具有的相同 行为
。我想说的是,我不想看到字母出现在输入中(就像现在这样)。


阅读 242

收藏
2020-07-04

共1个答案

一尘不染

您应该使用指令来完成它是正确的。只需创建一个指令并将其附加到即可input。该指令应侦听keypress和/或keydown发生事件。可能还粘贴事件。如果输入的字符是’e’或点-
调用event.preventDefault();

angular.module('app', [])

  .directive('yrInteger', yrInteger);



function yrInteger() {

  return {

    restrict: 'A',

    link: function(scope, element, attrs) {



      element.on('keypress', function(event) {



        if ( !isIntegerChar() )

          event.preventDefault();



        function isIntegerChar() {

          return /[0-9]|-/.test(

            String.fromCharCode(event.which))

        }



      })



    }

  }

}


<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<div ng-app="app">

  <input

         type="number"

         yr-integer

         />

</div>
2020-07-04