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

时间:2016-10-22 10:06:19

标签: javascript c# jquery angularjs



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;
                    }
                });

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

当粘贴内容不适用于该字段时,如何防止在文本框中粘贴? (它应粘贴适用的内容)

应用背景:C#,AngularJS

我的应用程序中有一个文本框,只能接受数字。目前我正在使用Keypress的指令,它阻止输入非数字值。但是当我将非数字值与数值(Ex:NUMBER123)一起复制粘贴时,它就会被粘贴。但要求是它根本不应该粘贴。我怎样才能通过适当的角度js指令/ jquery实现这一点。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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>

在你的头部尝试这个,你的文本框应该是这样的。