2016-10-22 93 views
0

如何防止在文本框中粘贴非数值?

app.directive('allowPattern', [allowPatternDirective]); 
 
function allowPatternDirective() { 
 
    return { 
 
     restrict: "A", 
 
     compile: function (tElement, tAttrs) { 
 
      return function (scope, element, attrs) { 
 
       element.bind("keypress", function (event) { 
 
        var keyCode = event.which || event.keyCode; 
 
        if ((keyCode >= 65 && keyCode <= 90) || (keyCode >= 97 && keyCode <= 122)) { 
 
         event.preventDefault(); 
 
         return false; 
 
        } 
 
       }); 
 

 
      }; 
 
     } 
 
    }; 
 
}
<input type="text" allow-pattern="[0-9]" autofocus />

如何防止在粘贴文本时粘贴的内容不适用于这一领域? (应粘贴适用conten)

应用背景:C#,AngularJS

我在我的应用程序,它应该只接受数字文本框。目前我正在使用Keypress的指令来防止输入非数字值。但是,当我复制粘贴非数字值与数值(例如:NUMBER123)时,它正在粘贴。但要求是它不应该粘贴。我如何通过适当的角度js指令/ jquery来实现这一点。

+1

邮政代码在这里 – Sajeetharan

+0

请仔细阅读http://stackoverflow.com/help/how-to-ask和改造你的问题。提供更多详细信息,包括您当前的代码和您已经完成的工作将会使帮助变得更加容易 –

回答

0

这是您的要求。

var app = angular.module('app', []); 
 

 
app.directive('allowNumbers', function() { 
 
    return { 
 
    require: 'ngModel', 
 
    link: function (scope, element, attr, ngModelCtrl) { 
 
     function test(text) { 
 
     var input = text.replace(/[^0-9]/g, ''); 
 
     if(input !== text) { 
 
      ngModelCtrl.$setViewValue(""); 
 
      ngModelCtrl.$render(); 
 
     } 
 
     return input; 
 
     } 
 
     ngModelCtrl.$parsers.push(test); 
 
    } 
 
    }; 
 
}); 
 

 
app.controller('MainCtrl', function($scope) { 
 
});
<html ng-app="app"> 
 
    
 
    <head lang="en"> 
 
    <meta charset="utf-8"> 
 
    <title>Directive</title> 
 
    <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.3/angular.min.js"></script> 
 
    <script src="app.js"></script> 
 
    </head> 
 
    
 
    <body ng-controller="MainCtrl"> 
 
    <input allow-numbers type="text" ng-model="test" autofocus> 
 
    </body> 
 

 
</html>

请运行该片段

Js fiddle of the directive

+0

谢谢。 但这也是一个问题。 –

+0

是的,请告诉我。 – Sravan

+0

如果我粘贴“abc123” - 它粘贴“123”。但根据我的要求,如果复制的值具有非数值,则根本不应该粘贴。我必须做出什么改变才能做到这一点? –

0
<script type="text/javascript">  
function onlyNos(e, t) 
{ 
    try 
    { 
     if (window.event) 
     { 
      var charCode = window.event.keyCode; 
     } 
     else if (e) 
     { 
      var charCode = e.which; 
     } 
     else 
     { 
      return true; 
     } 
     if (charCode > 31 && (charCode < 48 || charCode > 57)) 
     { 
      return false; 
     } 
     return true; 
    } 
    catch (err) 
    { 
     alert(err.Description); 
    } 
} 
</script> 

试试这个在你的头部和你的文本应该是这样的。

相关问题