我的输入是type =“ number”。我想防止用户在输入中键入小数,加,减或e。目前,我正在尝试在ng-keypress上启用e.preventDefault()以完全禁用密钥。但这是行不通的。我正在使用打字稿和angularJs。它可以在按键上看到事件,但是并不能阻止输入。或者,将ng-pattern与正则表达式一起使用会成为0-9的替代选项限制输入吗?



setCapacityType(e) {
  let keyCode = (e.keyCode ? e.keyCode : e.which);

  if (keyCode < 48 && keyCode > 57) {
    e.preventDefault();
    console.log("xx");
  }
}

<input type="number" ng-keydown="vm.setCapacityType($event)"
autocomplete="off" autocorrect="off" spellcheck="false">

最佳答案

好,两件事:


首先,您必须实例化您的功能:




vm.setCapacityType = function(e) {



要只允许数字[0-9],您应输入以下条件:




if (keyCode < 48 || keyCode > 57) {


现在,您可以拥有以下内容:



 angular.module('app', [])
   .controller('mainCtrl', function() {
     var vm = this;

     vm.setCapacityType = function(e) {
       let keyCode = (e.keyCode ? e.keyCode : e.which);
       if (keyCode < 48 || keyCode > 57) {
         console.log("Prevent!");
         e.preventDefault();
       }
     }
   });

<html ng-app="app">

<head>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.7/angular.min.js"></script>
</head>

<body ng-controller="mainCtrl as main">
  <input type="text" ng-keydown="main.setCapacityType($event)" autocomplete="off" autocorrect="off" spellcheck="false">
</body>

</html>






  带有正则表达式的ng-pattern是将选项输入限制为0-9的替代选项吗?


不,ngPattern指令不会阻止/限制输入。

09-20 23:39