2016-07-19 84 views
0

我有一个type =“number”的输入。我想阻止用户在输入中输入小数点,加法,减法或e。目前我正尝试在ng-keypress上使用e.preventDefault()来完全禁用密钥。但它不起作用。我正在使用typescript和angularJs。它正在按键上看到事件,但并不妨碍进入。或者,将使用ng-pattern与正则表达式替代选项将输入限制为0-9?Ng-keypress防止特定charCode的默认值

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">

回答

2

好吧,两件事情:

  1. 首先,你必须实例化功能:
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指令不会阻止/限制输入。