2016-10-22 40 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> 

試試這個在你的頭部和你的文本應該是這樣的。

相關問題